二项式反演&约束容斥
二项式反演
前导
对于一个错排 \(f(i)\) 可以有通项公式
\[f(n)=\sum_{i=0}^n\binom{n}{i}(-1)^i(n-i)!
\]
不妨设 \(g(i)=i!\)。则 \(g(i)\) 有一个显而易见的表达方式
\[g(i)=\sum_{i=0}^n\binom{n}{i}f(n-i)=\sum_{i=0}^n\binom{n}{i}f(i)
\]
通常用最后化的,那么实际意义就是有 \(i\) 个位置是错排的,然后 \(n-i\) 位是正常的。
正题
通常二项式反演要解决求 \(n\) 个元素中恰有 \(k\) 个元素满足某个条件的方案数。然后就有几个定义:
- \(f(i)\) 表示恰有 \(i\) 个元素满足条件的方案数。
- \(g(i)\) 表示钦定有 \(i\) 个元素满足条件的方案数。
\(f(i)\) 是好理解的,问题就是什么是 \(g(i)\) 的钦定。这里指的是至少有 \(i\) 个元素满足条件,但是可以有更多元素与它们共同组成,即可能有重复。形式化的,\(S_i\) 表示所有与第 \(i\) 个元素共同满足条件的集合。那么
\[g(i)=\sum_{p_1<p_2<\cdots<p_i}|S_{p_1}\cap S_{p_2}\cap\cdots\cap S_{p_i}|
\]
对于二项式反演,有结论:
\[g(i)=\sum_{j=i}^n \binom{j}{i}f(j)
\]
\[f(i)=\sum_{j=i}^n (-1)^{j-i}\binom{j}{i}g(j)
\]
证明
$$f(i)=\sum_{j=i}^n (-1)^{j-i}\binom{j}{i}g(j)$$ $$=\sum_{j=i}^n (-1)^{j-i}\binom{j}{i}\sum_{k=j}^n \binom{k}{j}f(k)$$ $$=\sum_{j=i}^n (-1)^{j-i}\sum_{k=j}^n \binom{j}{i}\binom{k}{j}f(k)$$ $$=\sum_{k=i}^n f(k)\sum_{k=j}^n (-1)^{j-i}\binom{j}{i}\binom{k}{j}$$ $$=\sum_{k=i}^n\binom{k}{n} f(k)\sum_{j=i}^k (-1)^{j-i}\binom{k-n}{k-j}$$ $$=\sum_{k=i}^n\binom{k}{n} f(k)(1-1)^{j-n}$$ $$=\sum_{k=i}^n\binom{k}{n} f(k)[j==i]$$ $$\binom{i}{i} f(i)$$ $$=f(i)$$约束容斥
通常用来解决与最大公约数或是一些循环节有关的东西。
首先令 \(f(x)\) 表示为满足题目要求条件得到 \(\gcd=x\) 的方案数。要求这个可以求另一个 \(g(x)\) 表示所有 \(\gcd \bmod x=0\) 的方案数。那么就有
\[f(x)=g(x)-\sum_i f(ix)
\]
通常 \(g(x)\) 会较为好求,那么就可以用这种方法得到 \(f(x)\)。比如计算满足某种条件的最大公约数之和就可以直接 \(\sum i\cdot f(i)\)。

浙公网安备 33010602011771号