二项式反演再学笔记

首先摆一下二项式定理

(a+b)k=i=0k(ki)aibki(a+b)^k=\sum_{i=0}^k \binom k i a^ib^{k-i}

再摆一下二项式反演的式子

g(n)=i=1n(ni)f(i)f(n)=i=1n(1)ni(ni)g(i)g(n)=\sum_{i=1}^n \binom n i f(i) ⟺ f(n)=\sum_{i=1}^n (-1)^{n-i}\binom n i g(i)

考虑证明。

将右边的式子带入左边的式子

g(n)=i=1n(ni)j=1i(1)ij(ij)g(j)=i=1ng(i)j=in(1)ji(ji)(nj)=i=1ng(i)j=in(1)jin!i!(ji)!(nj)!=i=1ng(i)n!i!j=in(1)ji(ji)!(nj)!=i=1ng(i)n!i!(ni)!j=in(1)ji(ni)!(ji)!(nj)!=i=1n(ni)g(i)j=in(1)ji(niji)\begin{aligned} g(n) &=\sum_{i=1}^n\binom n i \sum_{j=1}^i(-1)^{i-j}\binom i j g(j)\\ & =\sum_{i=1}^n g(i)\sum_{j=i}^n(-1)^{j-i}\binom j i\binom n j\\ & =\sum_{i=1}^n g(i) \sum_{j=i}^n(-1)^{j-i}\frac{n!}{i!(j-i)!(n-j)!}\\ & =\sum_{i=1}^n g(i)\frac{n!}{i!}\sum_{j=i}^n\frac{(-1)^{j-i}}{(j-i)!(n-j)!}\\ & =\sum_{i=1}^n g(i)\frac{n!}{i!(n-i)!}\sum_{j=i}^n(-1)^{j-i}\frac{(n-i)!}{(j-i)!(n-j)!}\\ & =\sum_{i=1}^n \binom n ig(i)\sum_{j=i}^n(-1)^{j-i}\binom{n-i}{j-i} \end{aligned}

i=ni\not= n,最后面的式子用二项式定理展开下,即是 (11)n=0(1-1)^n=0

i=ni=n,则最后面的式子为 11

g(n)=i=1n(ni)f(i)f(n)=i=1n(1)ni(ni)g(i)\therefore g(n)=\sum_{i=1}^n \dbinom n i f(i) ⟺ f(n)=\sum_{i=1}^n (-1)^{n-i}\dbinom n i g(i)

还有第二种形式

g(n)=i=1n(1)i(ni)f(i)f(n)=i=1n(1)i(ni)g(i)g(n)=\sum_{i=1}^n(-1)^i\binom n if(i)⟺f(n)=\sum_{i=1}^n(-1)^i\binom n ig(i)

这个式子的证明与上面的差不多。

当然,也可以下标是后缀的形式。

g(n)=i=nN(in)f(i)f(n)=i=nN(1)in(in)g(i)g(n)=\sum _{i=n}^N\binom inf(i)⟺f(n)=\sum_{i=n}^N(−1)^{i−n}\binom ing(i)

还有一种证明,就是把柿子化为卷积的形式。

F(n)=i=0n(ni)G(i)F(n)=i=0nn!i!(ni)!G(i)F(n)n!=i=0n1(ni)!G(i)i!\begin{aligned} &F(n)=\sum_{i=0}^n\binom niG(i)\\ &F(n)=\sum_{i=0}^n\frac{n!}{i!(n-i)!}G(i)\\ &\frac{F(n)}{n!}=\sum_{i=0}^n\frac 1{(n-i)!}\frac{G(i)}{i!} \end{aligned}

由于 ex=i=0xii!e^x=\sum\limits_{i=0}\dfrac{x^i}{i!},那么 F=GexF=G*e^xG=FexG=F*e^{-x}

G(n)=i=0n(1)i(ni)F(i)G(n)=\sum_{i=0}^n(-1)^{i}\binom niF(i)

注:上面的式子因为图方便 ii11 开始,其实应该从 00 开始

错排问题

f(i)f(i) 表示 ii 个球在不同位置的方案,g(i)g(i) 为所有的排列方案。有

g(n)=i=0n(ni)f(i)f(n)=i=0n(1)ni(ni)g(i)=i=0n(1)nin!i!(ni)!×i!=n!i=0n(1)ni1(ni)!g(n)=\sum_{i=0}^n\binom n if(i)\\ \begin{aligned} f(n)&=\sum_{i=0}^n (-1)^{n-i}\binom n i g(i)\\ & =\sum_{i=0}^n(-1)^{n-i}\frac{n!}{i!(n-i)!}\times i!\\ & =n!\sum_{i=0}^n(-1)^{n-i}\frac{1}{(n-i)!}\\ \end{aligned}

然后化成递推式即可。这只是一个例子。

恰好和至多或少的转换

f(n)f(n) 表示恰好有 nnwty\texttt{\color{black}w\color{red}ty} AK\text{\color{deeppink}AK} 的方案数,g(n)g(n) 表示至多有 nnwty\texttt{\color{black}w\color{red}ty} AK\text{\color{deeppink}AK} 的方案数。有

g(n)=i=0n(ni)f(i)g(n)=\sum_{i=0}^n\binom ni f(i)

反演可得:

f(n)=i=0n(1)ni(ni)g(i)f(n)=\sum_{i=0}^n (-1)^{n-i}\binom n ig(i)

有至多,当然也有至少。

g(n)=i=nN(in)f(i)f(n)=i=nN(1)in(in)g(i)g(n)=\sum_{i=n}^N\binom inf(i)\rightarrow f(n)=\sum_{i=n}^N (-1)^{i-n}\binom in g(i)

P4859 已经没有什么好害怕的了

nnai,bia_i,b_i,要求两两配对,使得 a>ba>b 的对数减去 a<ba<b 的对数等于 kkk,n[0,2000],abk,n\in[0,2000],ab 中没有相同元素。

a>ba>b 的对数为 xx 个,则 x(nx)=kx-(n-x)=kx=n+k2x=\dfrac{n+k}{2}。把 nknk22 不同余的先判掉。

a,ba,b 从小到大排序,令 gi,jg_{i,j} 表示前 iiaa 中,有 jj 个匹配大于 bb 的方案数。

则有

gi,j=gi1,j+gi1,j1×(cntij+1)g_{i,j}=g_{i-1,j}+g_{i-1,j-1}\times (cnt_i-j+1)

其中 cnticnt_i 表示 bb 中小于 aia_i 的个数。

然后对于其余的 iji-j 个随便排列,就是 (ij)!(i-j)!。然后令新的函数为 hh

二项式反演下,可得

fn,n+k2=i=n+k2n(ni)(i)in+k2hn,if_{n,\frac{n+k}{2}}=\sum_{i=\frac{n+k}{2}}^n\binom n i (-i)^{i-\frac{n+k}{2}}h_{n,i}

时间是 O(n2)O(n^2)

CF997C Sky Full of Stars

有一个 n×n(n106)n \times n(n\le10^6) 的正方形网格,用红色,绿色,蓝色三种颜色染色,求有多少种染色方案使得至少一行或一列是同一种颜色。

g(i,j)g(i,j) 表示钦定有 iijj 列是同一颜色,其他随意的方案数,f(i,j)f(i,j) 表示恰好有 iijj 列的方案数。

g(x,y)=i=xnj=yn(ix)(jy)f(i,j)f(x,y)=i=xnj=yn(1)i+jxy(ix)(jy)g(i,j)g(x,y)=\sum_{i=x}^n\sum_{j=y}^n\binom i x \binom j yf(i,j)\\ f(x,y)=\sum_{i=x}^n\sum_{j=y}^n(-1)^{i+j-x-y}\binom ix\binom jyg(i,j)

其实就是两次反演

考虑 g(x,y)g(x,y) 怎么求。

g(x,y)={(nx)(ny)3(nx)(ny)+1x=0,y=0(nx)3x+n(nx)x=0,y=0(ny)3y+n(ny)x=0,y=03n2x=0,y=0g(x,y)=\left\{ \begin{aligned} & \binom nx\binom ny3^{(n-x)(n-y)+1} & x\not=0,y\not=0\\ & \binom nx3^{x+n(n-x)} & x\not=0,y=0\\ & \binom ny3^{y+n(n-y)} & x=0,y\not=0\\ & 3^{n^2} & x=0,y=0 \end{aligned} \right.

由于 "至少一行或一列是同一种颜色",那么其实就是总方案数减去 f(0,0)f(0,0)

f(0,0)=i=0nj=0n(1)i+jg(i,j)f(0,0)=\sum_{i=0}^n\sum_{j=0}^n(-1)^{i+j}g(i,j)

A,B,CA,B,C 分别表示 x,yx,y 上面不同的状态的方案数(BB 有两种所以要乘 22)。

A=i=1nj=1n(1)i+jg(i,j)=i=1nj=1n(1)i+j(ni)(nj)3(ni)(nj)+1=3n2+1i=1n(1)i×3ni(ni)j=1n(nj)(3in)j=3n2+1i=1n(1)i×3ni(ni)((13in)n1)B=2i=1n(1)i(ni)3i+n(ni)=2×3n2i=1n(1)i(ni)(31n)i=2×3n2×((131n)n1)C=3n2\begin{aligned} A &=\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}g(i,j)\\ &=\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}\binom ni\binom nj3^{(n-i)(n-j)+1}\\ &=3^{n^2+1}\sum_{i=1}^n (-1)^i\times3^{-ni}\binom ni\sum_{j=1}^n\binom nj(-3^{i-n})^{j}\\ &=3^{n^2+1}\sum_{i=1}^n (-1)^i\times3^{-ni}\binom ni((1-3^{i-n})^n-1)\\ B&=2\sum_{i=1}^n(-1)^i\binom n i3^{i+n(n-i)}\\ &=2\times3^{n^2}\sum_{i=1}^n(-1)^i\binom ni(3^{1-n})^i\\ &=2\times 3^{n^2}\times ((1-3^{1-n})^n-1)\\ C&=3^{n^2} \end{aligned}

最后答案是 3n2ABC=AB3^{n^2}-A-B-C=-A-B

P4491 染色

长度为 nn 的画布,有 mm 种颜色。若其中有 kk 个颜色恰好有 SS 占个位置,则画布的权值为 WkW_k,求所有画布权值和。

G(n)G(n) 表示恰好有 nn 种颜色个数为 SS 的方案数,F(n)F(n) 表示至少有 nn 种颜色数为 SS 的方案数。

那么 F(x)F(x) 的组成就有从 mm 中选 xx 个的方案、从 nn 个中选出 SxSx 的方案、其余 nSxn-Sx 个位置的方案、SxSx 个位置内部的方案。

F(x)=(mx)(nSx)(mx)nSxi=0x1(S(xi)S)=(mx)(mx)nSx(nSx)i=1x(iS)!S!((i1)S)!=(mx)(mx)nSx(nSx)(Sx)!(S!)x=(mx)(mx)nSxn!(S!)x(nSx)!\begin{aligned} F(x)&=\binom mx\binom n{Sx}(m-x)^{n-Sx}\prod_{i=0}^{x-1}\binom {S(x-i)}{S}\\ &=\binom mx(m-x)^{n-Sx}\binom n{Sx}\prod_{i=1}^x\frac{(iS)!}{S!((i-1)S)!}\\ &=\binom mx(m-x)^{n-Sx}\binom n{Sx}\frac{(Sx)!}{(S!)^x}\\ &=\binom mx(m-x)^{n-Sx}\frac{n!}{(S!)^x(n-Sx)!}\\ \end{aligned}

G(x)=i=xm(1)ix(ix)F(i)\begin{aligned} G(x)&=\sum_{i=x}^{m}(-1)^{i-x}\binom{i}{x}F(i) \end{aligned}

然后用 O(n2)O(n^2) 暴力求出答案。

尝试用卷积的形式来表示它。

G(x)=i=xm(1)ix(ix)F(i)G(x)×x!=i=xm(1)ixi!(ix)!F(i)\begin{aligned} &G(x)=\sum_{i=x}^{m}(-1)^{i-x}\binom{i}{x}F(i)\\ &G(x)\times x!=\sum_{i=x}^m(-1)^{i-x}\frac{i!}{(i-x)!}F(i)\\ \end{aligned}

明显的,令 Ai=i!F(i),Bi=(1)i(i)!A_{i}=i!F(i),B_i=\dfrac{(-1)^i}{(i)!},则 G=ABG=A*B

使用 NTT,时间是 O(nlogn)O(n\log n)