重修 二项式反演

开头

我只知道容斥不知道二项式反演。

反演,顾名思义就是有两个函数 \(f,g\),知道 \(f\)\(g\) 表示后反过来 \(g\)\(f\) 表示。

二项式\((a+b)^n\),别学了二项式反演忘了二项式定理

\[\sum_{i=0}^n\binom{n}{i}a^ib^{n-i}=(a+b)^n \]

常见形式

(一)

式子

\[\begin{aligned} f(n)=\sum_{i=0}^n& (-1)^i\binom{n}{i}g(i) \\ & \Updownarrow \\ g(n)=\sum_{i=0}^n& (-1)^i\binom{n}{i}f(i) \end{aligned} \]

证明

\[\begin{aligned} & \sum_{i=0}^n(-1)^i\binom{n}{i}f(i) \\=& \sum_{i=0}^n(-1)^i\binom{n}{i}\sum_{j=0}^i(-1)^j\binom{i}{j}g(j) \\=& \sum_{j=0}^ng(j)\binom{n}{j}\sum_{i=j}^n(-1)^{i-j}\binom{n-j}{i-j} \\=& \sum_{j=0}^ng(j)\binom{n}{j}[n-j=0] \\=& g(n) \end{aligned} \]

(二)

式子

\[\begin{aligned} f(n)=\sum_{i=n}^N& (-1)^i\binom{i}{n}g(i) \\ & \Updownarrow \\ g(n)=\sum_{i=n}^N& (-1)^i\binom{i}{n}f(i) \end{aligned} \]

证明

\[\begin{aligned} & \sum_{i=n}^N(-1)^i\binom{i}{n}f(i) \\=& \sum_{i=n}^N(-1)^i\binom{i}{n}\sum_{j=i}^N(-1)^j\binom{j}{i}g(j) \\=& \sum_{j=n}^Ng(j)(-1)^{j-n}\binom{j}{n}\sum_{i=n}^j(-1)^{i-n}\binom{j-n}{i-n} \\=& \sum_{j=n}^Ng(j)(-1)^{j-n}\binom{j}{n}[j-n=0] \\=& g(n) \end{aligned} \]

证明的总结

由于两个式子都是对称的,所以都只证明了充分性。

证明都用到了

\[\binom{a}{b}\binom{b}{c}=\binom{a}{c}\binom{a-c}{b-c} \]

\[[n=0]=\sum_{i=0}^{n}\binom{n}{i}(-1)^i \]

多元的情况

我们拿二元举例子:

\[\begin{aligned} f(n,m)=\sum_{i=0}^n\sum_{j=0}^m(-& 1)^{i+j}\binom{n}{i}\binom{m}{j}g(i,j) \\ \Updownarrow \\ g(n,m)=\sum_{i=0}^n\sum_{j=0}^m(-& 1)^{i+j}\binom{n}{i}\binom{m}{j}f(i,j) \end{aligned}\]

其他应该同理。

例题

第二类斯特林数

我不会,长大后再学习。(

错排

\(g(x)\) 表示 \(n\) 个位置中至多\(x\) 个位置放错的方案数,而 \(f(x)\) 表示恰好

\[g(n)=n! \\ g(n)=\sum_{i=0}^{n}\binom{n}{i}f(i) \]

反演

\[\begin{aligned} f(n)&=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}g(i) \\&=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}i! \\&=\sum_{i=0}^{n}(-1)^{n-i}\frac{n!}{(n-i)!} \\&=n!\sum_{i=0}^{n}\frac{(-1)^{n-i}}{(n-i)!} \\&=n!\sum_{i=0}^{n}\frac{(-1)^i}{i!} \end{aligned}\]

错排通项由此诞生。

由于后面的和式是 \(e^{-1}\) 的泰勒展开,所以我们得到:

任意一个排列,当 \(n\to\infty\),该排列为错排的概率为 \(\dfrac{1}{e}\)

P.S.

错排递推式 \(f_n=(n-1)(f_{n-1}+f_{n-2})\)

\(n\) 所在环为二元环,删掉二元环后是错排,\((n-1)f_{n-2}\)

否则环长至少为三,将 \(n\) 前后接起来跳过 \(n\) 后是错排,\((n-1)f_{n-1}\)

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

给定 \(n\le 2000\) 长度的序列 \(a_1,\dots,a_n\)\(b_1,\dots,b_n\)\(2n\) 个元素两两不同,求排列 \(p_1,\dots,p_n\) 的个数使得(以下的 \(k\) 为原题的 \(\frac{n+k}{2}\)):

\[\sum_{i=1}^n[a_i>b_{p_i}]=k \]

\(f(x)\) 表示恰好 \(x\)\([a_i>b_{p_i}]\)\(\{p\}\) 的方案数,显然答案为 \(f(k)\)

\(g(x)\) 表示钦定 \(x\) 组…………的方案数。

钦定和至少的区别

钦定指固定某些位置满足条件,而至少只是单纯的计数。

举个例子,假设要计数值域 \(0,1\)\(a_1,a_2,a_3,a_4\) 序列中 \(a_i=1\) 个数不少于 \(2\) 个的方案数。

对于 \(\{a\}=\{0,1,1,1\}\) 来说:

至少:贡献为 \(1\),因为就一种状态。

钦定:贡献为 \(3\),因为序列中 \(3\)\(1\),我们钦定任意 \(2\) 个为 \(1\) 都会产生贡献,所以贡献为 \(\binom{3}{2}=3\)

显然

\[g(x)=\sum_{i=x}^n\binom{i}{x}f(i) \]

二项式反演

\[f(x)=\sum_{i=x}^n(-1)^{i-x}\binom{i}{x}g(i) \\ Ans=f(k)=\sum_{i=k}^n(-1)^{i-k}\binom{i}{k}g(i) \]

问题转化为求 \(g(k),\dots,g(n)\)

首先我们可以将 \(\{a\},\{b\}\) 升序排序,由于值互不相同,所以可求 \(c_1,\dots,c_n\) 使得 \(b_{c_i}\le a_i\le b_{c_i+1}\)

我们考虑 DP,\(dp(i,j)\) 表示 \(a\) 的前 \(i\) 个中有 \(j\)钦定匹配了比她小的 \(b\) 值,即有

\[dp(i,j)=dp(i-1,j)+dp(i-1,j-1)\cdot(c_i-(j-1)) \]

然后 \(g(i)=dp(n,i)\cdot (n-i)!\) 就做完了。

时间 \(O(n^2)\)

record

CF997C Sky Full of Stars

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

结果对 \(998244353\) 取模。

\(f(i,j)\) 表示恰好 \(i\) 行与 \(j\) 列颜色相同,而 \(g(i,j)\) 表示钦定 \(i\) 行与 \(j\) 列颜色相同。

\[g(x,y)=\sum_{i=x}^n\sum_{j=y}^n\binom{i}{x}\binom{j}{y}f(i,j) \]

二项式反演

\[f(x,y)=\sum_{i=x}^n\sum_{j=y}^n(-1)^{i+j-x-y}\binom{i}{x}\binom{j}{y}g(i,j) \\ \begin{aligned} Ans&=3^{n^2}-f(0,0) \\&=3^{n^2}-\sum_{i=0}^n\sum_{j=0}^n(-1)^{i+j}g(i,j) \end{aligned} \]

\(g(i,j)\) 要分类:

  1. \(i\ne 0,j\ne 0\),此时钦定的同色行列颜色必然全部一样,即

\[g(i,j)=\binom{n}{i}\binom{n}{j}3^{(n-i)(n-j)+1} \]

  1. \(i\ne 0,j=0\)\(i=0,j\ne 0\) 情况类似),此时这些行之间颜色可以不同,即

\[g(i,0)=\binom{n}{i}3^{n(n-i)+i} \]

  1. \(i=j=0\),此时自由了我向往自由!

\[g(0,0)=3^{n^2} \]

综上

\[\begin{aligned} Ans&=-2\sum_{i=1}^n(-1)^{i}g(i,0)-\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}g(i,j) \\&=-2A-B \end{aligned} \\ A=\sum_{i=1}^n(-1)^{i}\binom{n}{i}3^{n(n-i)+i} \\ B=\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}\binom{n}{i}\binom{n}{j}3^{(n-i)(n-j)+1} \]

\(A,B\) 分开求(分别均使用二项式定理)

\[\begin{aligned} A&=3^{n^2}\sum_{i=1}^n(-1)^{i}\binom{n}{i}3^{-ni+i} \\&=3^{n^2}\sum_{i=1}^n\binom{n}{i}(-3^{1-n})^{i} \\&=3^{n^2}((1-3^{1-n})^{n}-1) \end{aligned}\]

\[\begin{aligned} B&=3^{n^2+1}\sum_{i=1}^n\sum_{j=1}^n(-1)^{i+j}\binom{n}{i}\binom{n}{j}3^{-ni-nj+ij} \\&=3^{n^2+1}\sum_{i=1}^n(-1)^i\binom{n}{i}3^{-ni}\sum_{j=1}^n(-1)^j\binom{n}{j}3^{(i-n)j} \\&=3^{n^2+1}\sum_{i=1}^n(-1)^i\binom{n}{i}3^{-ni}\sum_{j=1}^n\binom{n}{j}(-3^{i-n})^j \\&=3^{n^2+1}\sum_{i=1}^n(-1)^i\binom{n}{i}3^{-ni}((1-3^{i-n})^n-1) \end{aligned}\]

所以就 \(O(n\log n)\) 解决了。

record

P6076 [JSOI2015]染色问题

\(n\times m\) 的矩形棋盘,初始无色。现在有 \(C\) 种颜料涂,要求:

  1. 棋盘的每一行/列至少有一个小方格被染色。

  2. 每种颜色都在棋盘上出现至少一次。

求染色方案数 \(\bmod 10^9+7\)

一样的套路,我们发现设 \(f(i,j,k)\) 表示恰好 \(i,j\) 行/列至少有一个染色,\(k\) 种颜色被上在墙上的方案数比较困难。

正难则反,设 \(f(i,j,k)\) 表示恰好 \(i,j\) 行/列完全没有染色\(k\) 种颜色没有上在墙上

同理 \(g(i,j,k)\)\(f\)恰好换成钦定

\[g(i,j,k)=\binom{n}{i}\binom{m}{j}\binom{C}{k}(C-k+1)^{(n-i)(m-j)} \]

然后求 \(g\) 关于 \(f\) 的表达式

\[g(i,j,k)=\sum_{x=i}^n\sum_{y=j}^m\sum_{z=k}^C \binom{x}{i}\binom{y}{j}\binom{z}{k}f(x,y,z) \]

然后三元二项式反演

\[f(i,j,k)=\sum_{x=i}^n\sum_{y=j}^m\sum_{z=k}^C (-1)^{x+y+z-i-j-k} \binom{x}{i}\binom{y}{j}\binom{z}{k}g(x,y,z) \]

然而我们要求的最终答案是 \(f(0,0,0)\) 即(将 \(g\) 一开始的柿子带入)

\[\begin{aligned} f(0,0,0)&=\sum_{i=0}^n\sum_{j=0}^m\sum_{k=0}^C (-1)^{i+j+k}g(i,j,k) \\&=\sum_{i=0}^n\sum_{j=0}^m\sum_{k=0}^C (-1)^{i+j+k}\binom{n}{i}\binom{m}{j}\binom{C}{k}(C-k+1)^{(n-i)(m-j)} \\&=\sum_{k=0}^C\sum_{i=0}^n\sum_{j=0}^m (-1)^{i+j+k}\binom{n}{i}\binom{m}{j}\binom{C}{k}(C-k+1)^{(n-i)(m-j)} \end{aligned}\]

这样我们在第一层循环时预处理后面的幂,时间复杂度 \(O(nmC)\)

posted @ 2022-06-22 22:30  ShaoJia  阅读(80)  评论(0)    收藏  举报