二项式反演
基本公式
证明:
这里只证明第一个,第二个同理。
要证明第一个式子等价于第二个式子,相当于把 \(F(n)\) 代入第二个式子后,第二个式子是恒等式。
代入得:
\(\begin{aligned}G(n)&=\sum\limits_{i=m}^n(-1)^{n-i}\binom{n}{i}\sum\limits_{j=m}^i\binom{i}{j}G(j)\\&=\sum\limits_{i=m}^n\sum\limits_{j=m}^i(-1)^{n-i}\binom{n}{i}\binom{i}{j}G(j)\\&=\sum\limits_{j=m}^n\sum\limits_{i=j}^n(-1)^{n-i}\binom{n}{j}\binom{n-j}{i-j}G(j)\\&=\sum\limits_{j=m}^n\binom{n}{j}\sum\limits_{i=j}^n(-1)^{n-i}\binom{n-j}{i-j}G(j)\\&=\sum\limits_{j=m}^n\binom{n}{j}\sum\limits_{i=0}^{n-j}(-1)^{n-j-i}\binom{n-j}{i}G(j)\\&=\sum\limits_{j=m}^n\binom{n}{j}(1-1)^{n-j}G(j)\\&=\sum\limits_{j=m}^n\binom{n}{j}G(j)[n=j]\\&=\binom{n}{n}G(n)=G(n)\end{aligned}\)
二项式反演例题
-
集合计数
一个有 \(n\) 个元素的集合,现在要取出此集合的若干子集(至少一个),使得它们的交集的元素个数为 \(k\),求取法的方案数。
sol:
记 \(F(i)\) 为答案,\(G(i)\) 表示「至少」\(k\) 个元素是集合的交集,即钦定 \(k\) 个元素作为集合的交集,剩余不做限制的方案数,会有重复。
而用 \(n−i\) 个元素都可以选或不选,所以共有 \(2^{N−i}\) 个集合,在其中选若干个集合有 \(2^{2^{N−i}}\) 种情况,再去掉一个空集,所以是 \(2^{2^{N−i}}-1\) 种方案。
则 \(G(i)=\binom{n}{k}(2^{2^{n-i}}-1)\)。
观察到 \(G(i)=\sum\limits_{j=i}^n\binom{j}{i}F(j)\)。
二项式反演得:
\(\begin{aligned}F(k)&=\sum\limits_{i=k}^n(-1)^{i-k}\binom{i}{k}G(i)\\&=\sum\limits_{i=k}^n(-1)^{i-k}\binom{i}{k}\binom{n}{k}(2^{2^{n-i}}-1)\end{aligned}\)
-
已经没有什么好害怕的了
有两个序列 \(a_i,b_i\) 保证所有元素互不相同。
你需要重排 \(b\) 序列,使得恰好有 \(k\) 个 \(i\) 满足 \(a_i>b_i\),求方案数。
sol:
先将 \(a\) 序列排序。
考虑设 \(dp_{i,j}\) 表示考虑了前 \(i\) 对数,钦定有 \(j\) 对数满足 \(a_x>b_x\)。
则 \(dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\times(cnt_{a_i}-j+1)\)。
其中,\(cnt_{a_i}\) 表示 \(b\) 序列中比 \(a_i\) 小的数的个数。
设 \(f(i)\) 表示钦定 \(i\) 对的方案数,\(g(i)\) 表示恰好 \(i\) 对的方案数。
观察可得:\(f_i=(n-i)!dp_{n,i}\)。
又有:\(f_i=\sum\limits_{j=i}^n\dbinom ji g_j\)
二项式反演得:\(g_k=\sum\limits_{i=k} ^n{(-1)^{n-i}\dbinom ik(n-i)!dp_{n,i}}\)。
-
Sky Full of Stars
有一个 \(n\times n\) 的矩阵,将其三染色,使得至少有一行或一列同色,问方案数。
sol:
记 \(f_{i,j}\) 为恰好 \(i\) 行 \(j\) 列同色的方案数,\(g_{i,j}\) 为钦定 \(i\) 行 \(j\) 列同色的方案数。
显然,\(g_{i,j}\) 有四种情况:
-
\(i=0,j=0\),此时 \(g_{i,j}=3^{n^2}\)。
-
\(i=0,j\ne 0\),此时 \(g_{i,j}=\binom{n}{j}3^j\cdot3^{n(n-j)}\)。
-
\(i\ne 0,j=0\),此时 \(g_{i,j}=\binom{n}{i}3^i\cdot 3^{n(n-i)}\)。
-
\(i\ne 0,j\ne 0\),此时有一行和一列相交,故只能取同种颜色,\(g_{i,j}=\binom{n}{i}\binom{n}{j}3\cdot 3^{(n-i)(n-j)}\)。
观察到:
\(\begin{aligned}g_{i,j}&=\sum\limits_{k=i}^n\sum\limits_{l=j}^n \binom{k}{i}\binom{l}{j}f_{k,l}\\&=\sum\limits_{k=i}^n\binom{k}{i}\sum\limits_{l=j}^n\binom{l}{j}f_{k,l}\end{aligned}\)
记 \(h_{k,j}=\sum\limits_{l=j}^n\binom{l}{j}f_{k,l}\),则 \(g_{i,j}=\sum\limits_{k=i}^n\binom{k}{i}h_{k,j}\)。
二项式反演得:
又 \(h_{i,j}=\sum\limits_{l=j}^n\binom{l}{j}f_{i,l}\)。
二项式反演得:
将 \(h_{i,l}\) 代入得:
注意到我们只需要求出 \(f_{0,0}\),答案就是总方案数减去 \(f_{0,0}\)。
所以 \(f_{0,0}=\sum\limits_{k=0}^n\sum\limits_{l=0}^n(-1)^{l+k}g_{k,l}\)。
把 \(g_{k,l}\) 分类可得:
其中前三部分都能 \(O(n)\) 求出,问题来到第四部分。
\(\begin{aligned}\sum\limits_{i=1}^n\sum\limits_{j=1}^n(-1)^{i+j}g_{i,j}&=3\sum\limits_{i=1}^n\sum\limits_{j=1}^n(-1)^i(-1)^j\binom{n}{i}\binom{n}{j}3^{(n-i)(n-j)}\\&=3\sum\limits_{i=0}^{n-1}\sum\limits_{j=0}^{n-1}(-1)^i(-1)^j\binom{n}{i}\binom{n}{j}3^{ij}\\&=3\sum\limits_{i=0}^{n-1}(-1)^i\binom{n}{i}\sum\limits_{j=0}^{n-1}(-1)^j3^{ij}\binom{n}{j}\\&=3\sum\limits_{i=0}^{n-1}(-1)^i\binom{n}{i}\sum\limits_{j=0}^{n-1}(-3^i)^j\binom{n}{j}\\&=3\sum\limits_{i=0}^{n-1}(-1)^i\binom{n}{i}[(-3^i+1)^n-(-3^{in})]\end{aligned}\)
这样就能 \(O(n)\) 算出了,此题得解。

浙公网安备 33010602011771号