二项式反演学习笔记

二项式反演

式子

\[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

懒,直接贴图:

posted @ 2024-08-12 10:20  sunzz3183  阅读(22)  评论(0)    收藏  举报
Live2D