前置知识:
1.排列组合
2.多步容斥
(记一下可能会用到的公式平时也很常用的
\[\begin{aligned}
&\dbinom{n}{m}\times \dbinom{m}{s}=\dbinom{n}{s}\times \dbinom{n-s}{n-m}\\
&\dbinom{m}{m-1}+\dbinom{m}{m}=\dbinom{m+1}{m}
\end{aligned}
\]
前置知识
二项式定理:
公式
\((a+b)^n=\sum^{n}_{i=0}\limits \dbinom{n}{i}a^ib^{n-i}\)
证明:
\(n=1\) 时代入显然成立
设 \(n=m\) 时该式子成立在证明 \(n=m+1\) 时该式子成立就可以推得该式子成立。
\(n=m\) 代入得到
\[(a+b)^m=\sum^{m}_{i=0}\limits \dbinom{m}{i} a^ib^{m-i}
\]
那么就有了(以下所有注释都是对上一行的解释)
\[\begin{aligned}
(a+b)^{m+1}=(a+b)(a+b)^{m}&=a(a+b)^m+b(a+b)^m\\
&=a\sum^{m}_{i=0}\dbinom{m}{i} a^ib^{m-i}+b\sum^{m}_{j=0}\dbinom{m}{j} a^ib^{m-j}\\
&=\sum^{m}_{i=0}\dbinom{m}{i} a^{i+1}b^{m-i}+\sum^{m}_{j=0}\dbinom{m}{j}a^{j}b^{m-j+1}\\
&=a^{m+1}+\sum^{m-1}_{i=0}\dbinom{m}{i}a^{i+1}b^{m-i}+b^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j}a^{j}b^{m-j+1}
\end{aligned}
\]
//\(i=m,\dbinom{m}{m} a^{m+1}b^0 = a^{m+1},j=0,\dbinom{m}{0}a^0 b^{m+1}=b^{m+1}\)
\[=a^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j-1}a^{j}b^{m-j+1}+b^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j}a^{j}b^{m-j+1}
\]
//用 \(j\)表示 \(i\)
\[\begin{aligned}
&=a^{m+1}+\sum^{m}_{j=1}\left[\ \binom{m}{j-1}+\binom{m}{j}\ \right]a^jb^{m-j+1}+b^{m+1}\\
&=a^{m+1}+\sum^{m}_{j=1}\left[\ \binom{m+1}{j}\ \right]a^jb^{m-j+1}+b^{m+1}
\end{aligned}
\]
//证明 \(\dbinom{m}{j-1}+\dbinom{m}{j}=\dbinom{m+1}{j}\)
//\(\dbinom{m}{j-1}+\dbinom{m}{j}=\dfrac{m!}{(j-1)!(m-j+1)!}+\dfrac{m!}{j!(m-j)!}\)
//\(=\dfrac{(m-j+1)m!+m!j}{(j)!(m-j+1)!}\)
//\(=\dfrac{(m+1)m!}{(j)!(m-j+1)!}\)
//\(=\dbinom{m+1}{j}\)
\[\begin{aligned}
&=\sum^{m+1}_{j=0}\left[\ \binom{m+1}{j}\ \right]a^jb^{m-j+1}
\end{aligned}
\]
//
当\(j=0,\dbinom{m+1}{0}a^0b^{m+1}=b^{m+1},j=m+1,\dbinom{m+1}{m+1}a^{m+1}b^0=a^{m+1}\)
显然证明得到二项式定理成立
然后我们再来推二项式反演:
二项式反演
基本形式(形式0):
公式
\[\begin{aligned}
&f_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}g_i\\
&\Updownarrow\\
&g_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}f_i\\
\end{aligned}
\]
证明形式0:
前置知识:多步容斥
多步容斥一般形式:
\[\begin{aligned}
&\large|A_1 \cup A_2 \cup A_3 \cup …\cup A_n|\\
&=\sum^{n}_{i=1} |A_i|-\sum^{n}_{i=1,j=1} |A_i \cap A_j|+…+(-1)^{n-1}\times |A_1 \cap A_2 \cap … \cap A_n|
\end{aligned}
\]
我们设\(A_i^c\)表示\(A_i\)的补集,将多步容斥一般形式变形,可得:
\[\begin{aligned}
&\large|A_i^c \cap A_2^c \cap … \cap A_n^c|=\\
&|S|-\sum^n_{i=1} |A_i| +\sum^n_{i=1,j=1} |A_i \cap A_j|-…+(-1)^n=times |A_1 \cap A_2 \cap … \cap A_n|
\end{aligned}
\]
由于补集的补集就是原集,所以又有了
\[\begin{aligned}
&\large|A_i \cap A_2 \cap … \cap A_n|=\\
&|S|-\sum^n_{i=1} |A_i^c| +\sum^n_{i=1,j=1} |A_i^c \cap A_j^c|-…+(-1)^n\times |A_1^c \cap A_2^c \cap … \cap A_n^c|
\end{aligned}
\]
那么我们\(f_n\)表示n个补集的交际大小,\(g_n\)表示n个原集的大小,两个公式分别可以写成:
\[\begin{aligned}
&f_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i} g_i\\
&g_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}f_i
\end{aligned}
\]
两公式是相互推导的关系,所以这就是二项式反演的形式0
常见形式(形式1):
公式
\[\begin{aligned}
&f_n=\sum^{n}_{i=0}\dbinom{n}{i}g_i\\
&\Updownarrow\\
&g_n=\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i
\end{aligned}
\]
当然它还有一个更常用的变形:
\[\begin{aligned}
&f_k=\sum\limits_{i=k}^n\dbinom{i}{k}g_i\\
&\Updownarrow\\
&g_k=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom{i}{k}f_i\\
\end{aligned}
\]
证明形式1:
已知
\[f_n=\sum^{n}_{i=0}\dbinom{n}{i}g_i
\]
我们使\(g_i\)是\(g_j\),\(n\)就是\(i\)
那么
\[\begin{aligned}
&\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i=\\
&\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}\sum^{i}_{j=0}\dbinom{i}{j}g_j\\
&=\sum^{n}_{i=0}\sum^{i}_{j=0}(-1)^{n-i}\dbinom{n}{i}\dbinom{i}{j}g_j\\
&=\sum^{n}_{i=0}\sum^{i}_{j=0}(-1)^{n-i}\dbinom{n}{j}\dbinom{n-j}{i-j}g_j\\
\end{aligned}
\]
//\(\dbinom{n}{m}\times \dbinom{m}{s}=\dbinom{n}{s}\times \dbinom{n-s}{n-m}\)
//再将 \(n\) 和 \(i\) 该替换的替换
\[\begin{aligned}
=\sum^{n}_{j=0}\sum^{n}_{i=j}(-1)^{n-i}\dbinom{n}{j}\dbinom{n-j}{i-j}g_j
\end{aligned}
\]
//我们把j放在前面
//对于两个大 sigma \(\sum^{n}_{i=0}\sum^{i}_{j=0}\) 来说,他代表 \(i \in [0,n],i>=j\) 的情况。
//其实和 \(j \in [0,n],i>=j\) 的所有情况。
//呃呃其实到这里的时候我也是有点懵,建议在这里琢磨琢磨。
//其实 \(i\) 和 \(j\)的范围都没变对吧。
对于 \(j=n\) 时 \(\large\sum^{n}_{i=j}\limits (-1)^{n-i}\binom{n}{j}\binom{n-j}{i-j}g_j\) 的值是 \(g_n\)
对于 \(j!=n\) 时,考虑 \(g_j\) 的系数。
我们先固定一个 \(j\),那么 \(\dbinom{n}{j}\) 作为一个常数,删去
\[\sum^{n}_{i=j}(-1)^{n-i}\dbinom{n-j}{i-j}
\]
然后 \(n-j\) 也是常数,设 \(m=n-j\),
并将 \(i\) 向左平移,使得范围 \(\in [j,n]\)变为$ \in[0,m]$ ,或者理解成 \(i\) 代表 \(i-j\),
那么系数就是:
\[\sum^{m}_{i=0}(-1)^{m-i}\dbinom{m}{i}
\]
刚刚我们推导的二项式定理:
\[(a+b)^n=\sum^{n}_{i=0}\dbinom{n}{i}a^ib^{n-i}
\]
我们让 \(a=1,b=-1,n=m\),
就有了:
\[0=\sum^{m}_{i=0}\dbinom{m}{i}(-1)^{m-i}
\]
\(g_j\) 的系数就等于 \(0\) 啊!
那么仅 \(j=n\) 时 \(g_j\) 系数和为 \(1\)
那么对于:
\[\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i=\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}\sum^{i}_{j=0}\dbinom{i}{j}g_j
\]
右边系数为 \(1\),
有了:
\[\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_j=g_n
\]
证毕。
(所以我们还是容斥+感性理解吧?)
应用:恰好与最多,恰好与至少之间的转换。
例题:
BZOJ 4403 集合计数
对于这道题,我们通过二项式反演公式:
\[\begin{aligned}
&f_k=\sum\limits_{i=k}^n\dbinom{i}{k}g_i\\
&\Updownarrow\\
&g_k=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom{i}{k}f_i\\
\end{aligned}
\]
显然有
\[\begin{aligned}
f_i=\sum_{j=1}^{n}(-1)^{j-i}\dbinom{j}{i}f_j
\end{aligned}
\]
嗯。
如果有错误请直接指出。
累了,听说这个还能用容斥写。
所有 \(\LaTeX\) 公式纯手打。
炸了体谅一下orz
upd:2023/9/22 21:43 修复部分 \(\LaTeX\) 问题。