容斥原理

容斥原理

定义

对于有限集合 $A_1,A_2,\cdots,A_n$,有:

$$|\bigcup\limits_{i=1}^nA_i|=\sum\limits_{\varnothing \ne S \subseteq \{1,2,\cdots,n\}}(-1)^{|S|-1}|\bigcap\limits_{i \in S}A_i|$$

证明

证明 1:验证每个元素 $x$ 的出现次数是否正确

不妨设 $x$ 在 $A_{y_1},A_{y_2},\cdots,A_{y_k}$ 这 $k$ 个集合中出现过,可以算出它被计算的次数为:

$$\begin{aligned} C_k^1-C_k^2+C_k^3-\cdots-(-1)^kC_k^k &= -\sum\limits_{i=1}^k(-1)^iC_k^i \\ &= -(\sum\limits_{i=0}^k(-1)^iC_k^i)+C_k^0 \\ &= -(1-1)^k+1 \\ &= 1 \end{aligned}$$

推论

对于有限全集 $U$ 的子集 $A_1,A_2,\cdots,A_n$,有:

$$|\bigcap\limits_{i=1}^n\overline{A_i}|=\sum\limits_{S \subseteq \{1,2,\cdots,n\}}(-1)^{|S|}|\bigcap\limits_{i \in S}A_i|$$

其中 $\bigcap\limits_{i \in \{1,2,\cdots,n\}}A_i=U$。

作用

作用:将“或”型或“都不”型条件转化为“全都”型。

二项式反演

正向

对于数列 $f_0,f_1,\cdots,f_n$,若 $g_0,g_1,\cdots,g_n$ 满足:

$$g_k=\sum\limits_{i=0}^kC_k^if_i$$

那么反过来有

$$f_k=\sum\limits_{i=0}^k(-1)^{k-i}C_k^ig_i$$

作用:将“恰好 $k$ 个”化为“除了 $k$ 个都不”。

反向

对于数列 $f_0,f_1,\cdots,f_n$,若 $g_0,g_1,\cdots,g_n$ 满足:

$$g_k=\sum\limits_{i=k}^nC_i^kf_i$$

那么反过来有

$$f_k=\sum\limits_{i=k}^n(-1)^{i-k}C_i^kg_i$$

作用:将“恰好 $k$ 个”化为“选取 $k$ 个”。

Min-max 容斥

Min-max 容斥

把数字 $t$ 看成集合 $T=(-\infty,t]$,那么 $A \cup B$ 就是 $\max\{a,b\}$,$A \cap B$ 就是 $\min\{a,b\}$。

因此形式上将容斥原理转写可得:

对于实数集 $S$,

$$\max\limits_{i \in S}i=\sum\limits_{\varnothing \ne T \subseteq \{S\}}(-1)^{|T|-1}\min\limits_{i \in T}i$$

作用:将“最大”型化为“最小”型。

$k$-th Min-max 容斥

推导过程

假设 $T$ 的容斥系数为 $f(|T|)$,使得:

$$k\mathrm{-th}\max\limits_{i \in S}i=\sum\limits_{\varnothing \ne T \subseteq S}f(|T|)\min\limits_{i \in T}i$$

我们考虑一个从小到大数排名为 $x$ 的元素对答案的贡献:

$$[n-x+1=k]=\sum\limits_{i=0}^{n-x}C_{n-x}^if(i+1)$$

$$[x=k-1]=\sum\limits_{i=0}^xC_x^if(i+1)$$

根据二项式反演,我们有:

$$f(x+1)=\sum\limits_{i=0}^x(-1)^{x-i}C_x^i[i=k-1]=(-1)^{x-k+1}C_x^{k-1}$$

$$f(x)=(-1)^{x-k}C_{x-1}^{k-1}$$

结论

$$k\mathrm{-th}\max\limits_{i \in S}i=\sum\limits_{\varnothing \ne T \subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\min\limits_{i \in T}i$$

例题:简单容斥原理

名称 编号 备注 题解
组合计数,容斥原理,DP

例题:容斥原理

名称 编号 备注 题解
求长度为 $n$ 的字符集大小为 $m$ 且不存在两个相邻的长度为 $k$ 的连续子串相等的串 $s$ 的数量
对上下界进行容斥
在树形 DP 中使用容斥系数
有一个 $n$ 个点、$m$ 条边的无向连通图,无重边、自环,问有多少种连边方案,使得新图为边双连通图。

例题:二项式反演

名称 编号 备注 题解
树的拓扑序计数,二项式反演

例题:min-max 容斥

名称 编号 备注 题解
min-max 容斥,插头 DP

参考资料