首先摆一下二项式定理
(a+b)k=i=0∑k(ik)aibk−i
再摆一下二项式反演的式子
g(n)=i=1∑n(in)f(i)⟺f(n)=i=1∑n(−1)n−i(in)g(i)
考虑证明。
将右边的式子带入左边的式子
g(n)=i=1∑n(in)j=1∑i(−1)i−j(ji)g(j)=i=1∑ng(i)j=i∑n(−1)j−i(ij)(jn)=i=1∑ng(i)j=i∑n(−1)j−ii!(j−i)!(n−j)!n!=i=1∑ng(i)i!n!j=i∑n(j−i)!(n−j)!(−1)j−i=i=1∑ng(i)i!(n−i)!n!j=i∑n(−1)j−i(j−i)!(n−j)!(n−i)!=i=1∑n(in)g(i)j=i∑n(−1)j−i(j−in−i)
若 i=n,最后面的式子用二项式定理展开下,即是 (1−1)n=0。
若 i=n,则最后面的式子为 1。
∴g(n)=∑i=1n(in)f(i)⟺f(n)=∑i=1n(−1)n−i(in)g(i)
还有第二种形式
g(n)=i=1∑n(−1)i(in)f(i)⟺f(n)=i=1∑n(−1)i(in)g(i)
这个式子的证明与上面的差不多。
当然,也可以下标是后缀的形式。
g(n)=i=n∑N(ni)f(i)⟺f(n)=i=n∑N(−1)i−n(ni)g(i)
还有一种证明,就是把柿子化为卷积的形式。
F(n)=i=0∑n(in)G(i)F(n)=i=0∑ni!(n−i)!n!G(i)n!F(n)=i=0∑n(n−i)!1i!G(i)
由于 ex=i=0∑i!xi,那么 F=G∗ex,G=F∗e−x。
G(n)=i=0∑n(−1)i(in)F(i)
注:上面的式子因为图方便 i 从 1 开始,其实应该从 0 开始
错排问题
令 f(i) 表示 i 个球在不同位置的方案,g(i) 为所有的排列方案。有
g(n)=i=0∑n(in)f(i)f(n)=i=0∑n(−1)n−i(in)g(i)=i=0∑n(−1)n−ii!(n−i)!n!×i!=n!i=0∑n(−1)n−i(n−i)!1
然后化成递推式即可。这只是一个例子。
恰好和至多或少的转换
令 f(n) 表示恰好有 n 个 wty AK 的方案数,g(n) 表示至多有 n 个 wty AK 的方案数。有
g(n)=i=0∑n(in)f(i)
反演可得:
f(n)=i=0∑n(−1)n−i(in)g(i)
有至多,当然也有至少。
g(n)=i=n∑N(ni)f(i)→f(n)=i=n∑N(−1)i−n(ni)g(i)
有 n 个 ai,bi,要求两两配对,使得 a>b 的对数减去 a<b 的对数等于 k,k,n∈[0,2000],ab 中没有相同元素。
令 a>b 的对数为 x 个,则 x−(n−x)=k,x=2n+k。把 nk 模 2 不同余的先判掉。
将 a,b 从小到大排序,令 gi,j 表示前 i 个 a 中,有 j 个匹配大于 b 的方案数。
则有
gi,j=gi−1,j+gi−1,j−1×(cnti−j+1)
其中 cnti 表示 b 中小于 ai 的个数。
然后对于其余的 i−j 个随便排列,就是 (i−j)!。然后令新的函数为 h。
二项式反演下,可得
fn,2n+k=i=2n+k∑n(in)(−i)i−2n+khn,i
时间是 O(n2)。
有一个 n×n(n≤106) 的正方形网格,用红色,绿色,蓝色三种颜色染色,求有多少种染色方案使得至少一行或一列是同一种颜色。
令 g(i,j) 表示钦定有 i 行 j 列是同一颜色,其他随意的方案数,f(i,j) 表示恰好有 i 行 j 列的方案数。
有
g(x,y)=i=x∑nj=y∑n(xi)(yj)f(i,j)f(x,y)=i=x∑nj=y∑n(−1)i+j−x−y(xi)(yj)g(i,j)
其实就是两次反演。
考虑 g(x,y) 怎么求。
g(x,y)=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧(xn)(yn)3(n−x)(n−y)+1(xn)3x+n(n−x)(yn)3y+n(n−y)3n2x=0,y=0x=0,y=0x=0,y=0x=0,y=0
由于 "至少一行或一列是同一种颜色",那么其实就是总方案数减去 f(0,0)。
f(0,0)=i=0∑nj=0∑n(−1)i+jg(i,j)
令 A,B,C 分别表示 x,y 上面不同的状态的方案数(B 有两种所以要乘 2)。
ABC=i=1∑nj=1∑n(−1)i+jg(i,j)=i=1∑nj=1∑n(−1)i+j(in)(jn)3(n−i)(n−j)+1=3n2+1i=1∑n(−1)i×3−ni(in)j=1∑n(jn)(−3i−n)j=3n2+1i=1∑n(−1)i×3−ni(in)((1−3i−n)n−1)=2i=1∑n(−1)i(in)3i+n(n−i)=2×3n2i=1∑n(−1)i(in)(31−n)i=2×3n2×((1−31−n)n−1)=3n2
最后答案是 3n2−A−B−C=−A−B。
长度为 n 的画布,有 m 种颜色。若其中有 k 个颜色恰好有 S 占个位置,则画布的权值为 Wk,求所有画布权值和。
令 G(n) 表示恰好有 n 种颜色个数为 S 的方案数,F(n) 表示至少有 n 种颜色数为 S 的方案数。
那么 F(x) 的组成就有从 m 中选 x 个的方案、从 n 个中选出 Sx 的方案、其余 n−Sx 个位置的方案、Sx 个位置内部的方案。
F(x)=(xm)(Sxn)(m−x)n−Sxi=0∏x−1(SS(x−i))=(xm)(m−x)n−Sx(Sxn)i=1∏xS!((i−1)S)!(iS)!=(xm)(m−x)n−Sx(Sxn)(S!)x(Sx)!=(xm)(m−x)n−Sx(S!)x(n−Sx)!n!
G(x)=i=x∑m(−1)i−x(xi)F(i)
然后用 O(n2) 暴力求出答案。
尝试用卷积的形式来表示它。
G(x)=i=x∑m(−1)i−x(xi)F(i)G(x)×x!=i=x∑m(−1)i−x(i−x)!i!F(i)
明显的,令 Ai=i!F(i),Bi=(i)!(−1)i,则 G=A∗B。
使用 NTT,时间是 O(nlogn)。