二项式反演学习笔记
二项式反演
式子
\[g_n=\sum_{i=0}^nC_n^i*f_i\Leftrightarrow f_n=\sum_{i=0}^n(-1)^{n-i}*C_n^i*g_i
\]
证明
将左式带入右式:
\[f_n=\sum_{i=0}^n(-1)^{n-i}*C_n^i*g_i=\sum_{i=0}^n(-1)^{n-i}*C_n^i*(\sum_{j=0}^iC_i^j*f_j)=\sum_{j=0}^n(f_j*\sum_{i=j}^n((-1)^{n-i}*C_n^i*C_i^j))
\]
\(\because C_n^i*C_i^j=C_n^j*C_{n-j}^{i-j}\)
\[\sum_{j=0}^n(f_j*\sum_{i=j}^n((-1)^{n-i}*C_n^i*C_i^j))=\sum_{j=0}^n(f_j*C_n^j\sum_{i=j}^n((-1)^{n-i}*C_{n-j}^{i-j}))
\]
令 \(k=i-j\),得:
\[\sum_{j=0}^n(f_j*C_n^j\sum_{i=j}^n((-1)^{n-i}*C_{n-j}^{i-j}))=\sum_{j=0}^n(f_j*C_n^j\sum_{k=0}^{n-j}((-1)^{n-j-k}*C_{n-j}^k))
\]
\(\because \sum_{k=0}^{n-j}((-1)^{n-j-k}*C_{n-j}^k)=(1-1)^{n-j}\)
\(\therefore \sum_{k=0}^{n-j}((-1)^{n-j-k}*C_{n-j}^k)=[(n-j)=0]\)
\[\sum_{j=0}^n(f_j*C_n^j\sum_{k=0}^{n-j}((-1)^{n-j-k}*C_{n-j}^k))=f_n*C_n^n=f_n
\]
证毕。
应用
常用形式
- \(f_i\) 为恰好,\(g_i\) 为至多
\(f_n\) 表示恰好使用 \(n\) 个元素形成某种特定要求的方案数。
\(g_n\) 表示至多使用 \(n\) 个元素形成某种特定要求的方案数。
\[g_n=\sum_{i=0}^nC_n^i*f_i\Leftrightarrow f_n=\sum_{i=0}^n(-1)^{n-i}*C_n^i*g_i \]
- \(f_i\) 为恰好,\(g_i\) 为至少
\(f_k\) 表示恰好使用 \(n\) 个元素形成某种特定要求的方案数。
\(g_k\) 表示至少使用 \(n\) 个元素形成某种特定要求的方案数。
\[g_k=\sum_{i=k}^nC_i^k*f_i\Leftrightarrow f_k=\sum_{i=k}^n(-1)^{i-k}*C_i^k*g_i \]
实际求解中可以用各种方法求出相对好求的一侧,再利用二项式反演求解另一侧问题。
多数需要用到二项式反演的问题特征是需要求恰好的方案数,同时至多至少有相对容易的求解方法。
例子
例 1
错排问题:\(n\) 把钥匙开对应 \(n\) 把锁,求一把锁也不开的钥匙排列个数。
至多模型, \(g_n=n!\)。
例 2
懒,直接贴图:


浙公网安备 33010602011771号