二项式反演
二项式反演的常见形式有如下两种:
[f(n) = sum_{i=m}^n inom ni g(i) Longleftrightarrow g(n) = sum_{i=m}^n (-1)^{n-i} inom ni f(i)
]
[f(n) = sum_{i=n}^m inom in g(i) Longleftrightarrow g(n) = sum_{i=n}^m (-1)^{i-n} inom in f(i)
]
我这里简要讲一下第一个式子的证明。只讲证明,不讲推导。
[egin{align*}
g(n) &= sum_{i=m}^n(-1)^{n-i}inom ni f(i)\
&= sum_{i=m}^n(-1)^{n-i}inom ni sum_{j=m}^i inom ijg(j)\
&= sum_{j=m}^ng(j)sum_{i=j}^n(-1)^{n-i}inom niinom ij\
&= sum_{j=m}^ng(j)sum_{i=j}^n(-1)^{n-i}inom njinom{n-j}{i-j}\
&= sum_{j=m}^ninom njg(j)sum_{i=j}^n(-1)^{n-i}inom{n-j}{i-j}\
&= sum_{j=m}^ninom njg(j)sum_{t=0}^{n-j}(-1)^{n-j-t}inom{n-j}t\
&= sum_{j=m}^ninom njg(j)(-1)^{n-j}sum_{t=0}^{n-j}(-1)^{t}inom{n-j}t\
end{align*}
]
可以发现,如果 (n-j
eq 0),那么,(sumlimits_{t=0}^{n-j}(-1)^{t}inom{n-j}t = 0)。但是如果 (n-j = 0),那么就只会算一个 (inom 00 = 1)。也就是说,只有在 (j=n) 的时候,后面才会有用, 这个时候 (inom nn g(n)(-1)^0 = g(n)),因此 (g(n) = g(n))。
证毕。
至于第二个式子,可以把第一个式子改造改造,或者用类似第一个式子的证法就可以证明了。
应用
求第二类斯特林数
众所周知,第二类斯特林数 (S(n, k) = egin{Bmatrix}n\k end{Bmatrix}) 表示 (n) 个不同的小球放进 (k) 个相同的盒子,且盒子不能为空的方案数。
所以我们很容易得到一个简单的递推式:
[egin{Bmatrix}n\k end{Bmatrix} = egin{Bmatrix}n-1\k-1 end{Bmatrix}+egin{Bmatrix}n-1\k end{Bmatrix}cdot k
]
如果我们需要求出所有的 (S(n, i)),这样直接递推是 (O(n^2)) 的。但是结合二项式反演,我们可以 (O(nlog n)) 求出所有的 (S(n, i))。
既然第二类斯特林数要求盒子不能为空,那么我们就可以很容易的得到一个这样的等式。
[k^n = sum_{i=0}^k i! inom ki egin{Bmatrix}n\iend{Bmatrix}
]
左边表示把 (n) 个不同小球放进 (k) 个不同的盒子,且可以为空,右边的话,就是先枚举有哪些盒子是不为空的,然后用斯特林数求一下方案数,乘上从 (k) 个盒子中选择 (i) 个数组合起来的方案数;但是这样求出来的相同的盒子的方案,因此还需要乘上 (i!)。
我们令 (f(k) = k^n),(g(k)=k!egin{Bmatrix}n\k end{Bmatrix})。根据上面的结论,有
[f(k) = sum_{i=0}^k inom ki g(i)
]
那么直接二项式反演
[g(k)=sum_{i=0}^k(-1)^{k-i}inom ki f(i)\
k!egin{Bmatrix}n\k end{Bmatrix}=sum_{i=0}^k (-1)^{k-i}inom kii^n\
egin{align*}
egin{Bmatrix}n\k end{Bmatrix} &= frac 1{k!}sum_{i=0}^k (-1)^{k-i}inom kii^n\
&= frac 1{k!}sum_{i=0}^k frac {(-1)^{k-i}k!i^n}{i!(k-i)!}\
&= sum_{i=0}^k frac {(-1)^{k-i}i^n}{i!(k-i)!}
end{align*}
]
我们令 (A_i = frac{i^n}{i!}),(B_i = frac{(-1)^i}{i!})。用 FFT 将 (A) 和 (B) 做卷积就可以了。
题目
BZOJ2839 集合计数 题解
BZOJ已经没有什么好害怕的了 题解
参考资料
https://www.cnblogs.com/GXZlegend/p/11407185.html
http://blog.miskcoo.com/2015/12/inversion-magic-binomial-inversion