二项式定理&二项式反演

内容

二项式定理

\((a+b)^n = \sum\limits_{i=0}^{n}a^{i}b^{n-i}\binom{n}{i}\)

二项式反演

\(a=1, b=-1\) 代入二项式定理可得推论式 \(\sum\limits_{i=0}^{n} (-1)^{n-i}\binom{n}{i} = [n=0]\)

分离式:\(\binom{n}{m}\binom{m}{k} = \binom{n}{k}\binom{n - k}{m - k}\),根据组合意义易证。

现有反演: \(f(n) = \sum\limits_{i=0}^{n} \binom{n}{i} g(i) \Leftrightarrow g(n) = \sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} f(i)\)

证明

利用推论式与分离式进行证明。

\[\begin{array}{c} \sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} f(i)\\ =\sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} \sum\limits_{j=0}^{i} \binom{i}{j} g(j)\\ =\sum\limits_{j=0}^{n} \sum\limits_{i=j}^{n} (-1)^{n-i} \binom{n}{i} \binom{i}{j} g(j)\\ =\sum\limits_{j=0}^{n} \sum\limits_{i=j}^{n} (-1)^{n-i} \binom{n}{j} \binom{n-j}{i-j} g(j)\\ =\sum\limits_{j=0}^{n} \binom{n}{j} g(j)\sum\limits_{i=j}^{n} (-1)^{n-i} \binom{n-j}{i-j}\\ =\sum\limits_{j=0}^{n} \binom{n}{j} g(j)\sum\limits_{i+j=j}^{n} (-1)^{n-i-j} \binom{n-j}{i+j-j}\\ =\sum\limits_{j=0}^{n} \binom{n}{j} g(j)\sum\limits_{i=0}^{n-j} (-1)^{n-j-i} \binom{n-j}{i}\\ =\sum\limits_{j=0}^{n} \binom{n}{j} g(j)[n = j]\\ = g(n) \end{array} \]

两个个基本形式:

  1. 钦定意义下至多转换为恰好:\(f(n) = \sum\limits_{i=0}^{n} \binom{n}{i} g(i) \Leftrightarrow g(n) = \sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} f(i)\)

  2. 钦定意义下至少转换为恰好:\(f(m) = \sum\limits_{i=m}^{n} \binom{i}{m} g(i) \Leftrightarrow g(m) = \sum\limits_{i=m}^{n} (-1)^{i-m} \binom{i}{m} f(i)\)

例题(持续补充)

ABC423F Loud Cicada

  1. \(g(m)\) 表示恰好 \(m\) 只蝉。
  2. \(f(m)\) 表示至少 \(m\) 只蝉。

\(f(m) = \sum\limits_{i=m}^{n} \binom{i}{m} g(i) = \sum_{\mathrm{popcount(S)} = m} \lfloor \frac{Y}{\mathrm{lcm}_{u\ \in\ S}\ a_u} \rfloor\)

反演就完了。

有人可能疑惑,这里也是算的 \(\mathrm{popcount(S)} = m\),为什么是至少呢?因为其他的蝉叫不叫不确定。

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

  1. \(g(m)\) 表示恰好有 \(m\)\(a_i > b_i\)
  2. \(f(m)\) 表示至少有 \(m\)\(a_i > b_i\)

先给 \(a, b\) 序列分别排序,\(f(m)\) 不好直接求,考虑定义 \(dp_{i, j}\) 表示在 \(a\) 中前 \(i\) 个数选出 \(j\)\(a > b\) 的方案数。

  1. 不考虑 \(a_i\),显然 \(dp_{i,j} = dp_{i-1, j}\)
  2. 考虑 \(a_i\),令 \(p\) 表示 \(a_i > b\)\(b\) 的个数,显然 \(dp_{i, j} = dp_{i-1, j-1} \times (p - j + 1)\)

这个你可以双指针求。

所以 \(f(m) = dp_{n, m}(n - m)!\),最后要求 \(g(\frac{n + k}{2})\),自证不难。

P10596 BZOJ2839 集合计数

之前贺题解写的。

  1. \(g(m)\) 表示交集恰好有 \(m\) 个元素。
  2. \(f(m)\) 表示交集至少有 \(m\) 个元素。

先钦定哪 \(m\) 个元素,总共 \(\binom{n}{m}\) 种,所有包含某 \(m\) 个元素的子集总共有 \(2^{n - m}\) 个,自证不难。

所以 \(f(m) = \binom{n}{m} \left ( 2^{2^{n - m}} - 1\right )\),用欧拉定理然后反演一下就行。

P6076 [JSOI2015] 染色问题

神秘套娃题,看题看不出来可以用二项式反演。

  1. \(g(n, m, c)\) 表示在 \(n\times m\) 的矩形中,恰好用 \(c\) 种颜色满足要求。
  2. \(f_1(n, m, c)\) 表示在 \(n\times m\) 的矩形中,至多用 \(c\) 种颜色满足其他要求。
  3. \(f_2(n, m, c)\) 表示在 \(n \times m\) 的矩形中,至多用 \(c\) 种颜色,至多有 \(m\) 列有颜色,且恰好有 \(n\) 行有颜色。
  4. \(f_3(n, m, c)\) 表示在 \(n \times m\) 的矩形中,至多用 \(c\) 种颜色,至多有 \(m\) 列有颜色,至多有 \(n\) 行有颜色。

可以看出,这是一个接着一个把恰好转换为至多,所以要套用三次反演。

所以有:

\(f_3(n, m, c) = \sum\limits_{i = 0} ^ {n} \binom{n}{i} f_2(i, m, c) \Leftrightarrow f_2(n, m, c) = \sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} f_3(i, m, c)\)

\(f_2(n, m, c) = \sum\limits_{i = 0} ^ {m} \binom{m}{i} f_1(n, i, c) \Leftrightarrow f_1(n, m, c) = \sum\limits_{i=0}^{m} (-1)^{m-i} \binom{m}{i} f_2(n, i, c)\)

\(f_1(n, m, c) = \sum\limits_{i = 0} ^ {c} \binom{c}{i} g(n, m, i) \Leftrightarrow g(n, m, c) = \sum\limits_{i=0}^{c} (-1)^{c-i} \binom{c}{i} f_1(n, m, i)\)

答案即为 \(g(n, m, c)\)

考虑计算 \(f_3(n, m, c)\),显然每个格子、行列之间不受约束,只有本身受颜色约束,所以 \(f_3(n, m, c) = (c + 1)^{nm}\),即上色与不上色。

所以 \(f_2(n, m, c) = \sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} (c + 1) ^ {im}\)

然后一直往上带到 \(g\) 为止,有时间复杂度 \(O(nmc \log(nmc))\),已经可以过了。但是如果你注意到 \(\sum\limits_{i=0}^{n} (-1)^{n-i} \binom{n}{i} (c + 1) ^ {im} = ((c+1)^m - 1)^n\),可以变为 \(O(nm\log(nmc))\)

当然也可以参考这篇题解只用反演两次,上面的等式在里面也有原因,这里不多写了。

P10597 BZOJ4665 小 w 的喜糖

  1. \(g(m)\) 表示恰好 \(m\) 个人与原来糖种类相同。
  2. \(f(m)\) 表示钦定 \(m\) 个人与原来糖种类相同。

原题中描述方案不同的是某个人糖的种类不同是不好设计的,假设糖本质不同,最后只需要除以 \(\prod to_i !\) 即可。(有用的技巧)

\(dp_{n, m}\) 表示前 \(n\) 种糖中,钦定 \(m\) 人与拿到与原来种类相同的方案数。

可以得到 \(dp_{i,j} = \sum\limits_{k = 0} ^ {\min(j, to_i)} dp_{i-1, j-k} \binom{to_i}{k} A_{to_i}^{k}\)。即枚举新钦定 \(k\) 个人,于是要从这 \(to_i\) 个人中选出 \(k\) 个,然后从 \(to_i\) 个糖中选出 \(k\) 个,任意顺序给新钦定的这 \(k\) 人。

显然 \(f(m) = dp_{n, m} \times (n - m)!\)

反演一下就行了,答案为 \(\frac{g(0)}{\prod to_i!}\)

posted @ 2026-02-02 20:27  Statax  阅读(17)  评论(1)    收藏  举报