还是得学点的。
卷积
多项式乘法卷积:和卷积/差卷积。
分治 ntt:fi=∑j=0i−1fjgi−j。cdq 分治,每次将 f[l,mid] 和 g[0,r−l] 卷,转移给 f[mid+1,r]。
泰勒展开
f(x)=fx0+n=1∑+∞n!f(n)(x0)(x−x0)n。所以有 ex=∑i=0i!xi 和 ln(1−x)=−∑i=1ixi。
ln/exp
设 g=ln(f)。有 f0=1,g0=0。
求导,g′(x)=f(x)f′(x)。
对于第 i 项,∑j=0i(j+1)gj+1fi−j=(i+1)fi+1。
令 i=i+1,j=j+1,igi+∑j=1i−1jgjfi−j=ifi。
设 g=exp(f)。有 f0=0,g0=1。
求导,g′(x)=g(x)f′(x)。
对于第 i 项,(i+1)gi+1=∑j=0igj(i−j+1)fi−j+1。
令 i=i+1,igi=∑j=0i−1gj(i−j)fi−j。
两个都可以分治 ntt,一次 n=105 小于 500ms。
exp 和 单 log 速度相当,ln 多一倍常数。
OGF
给对于位置的系数加上 xi 进行区分。F(x)=∑i=0fixi。
∑i=0cixik=1−cxk1
EGF
F(x)=∑i=0i!fixi。
卷积:(f∗g)k=∑i+j=k(ik)figj。一般 除以 i! 后当 OGF 算。
exp(f(x)) 展开后 ∑i!f(x)i,等于多次卷积再消去元素间的顺序,组合意义为有标号集合计数。
组合数公式
(mn) ,n 个选 m 个。