容斥原理备忘录


记录以备忘.

综述

虽然是很基础的东西, 但是不妨回头再看它一眼.

又因为本文定位于备忘, 所有不会有关于任何公式的证明, 其实就是公式的罗列… 如果真的对证明感兴趣, 不妨去文末的参看资料看看.

基础

设全集 $U$ 中有 $n$ 中不同条件 $P_{i\ldots n}$, 记 $A_i$ 为满足条件 $P_i$ 元素的集合.

由集合的交计算集合的并

由补集的并计算集合的交

直接将之前的式子带入, 则有

进一步可以得到

至于其他情况, 可用摩根定律进行转化.

很多时候集合中元素具体是什么不会影响结果, 此时枚举集合大小同时乘一个组合数作为系数就可以得出一些式子.

推广

二项式反演

虽然本质是容斥原理, 但是在实际中可能 (?) 会更好用一点.

此时的 $f(n)$, $g(n)$ 有组合意义, 例如 $f(n)$ 表示在总共 $m$ 个物品中, 恰好选择 $n$ 个满足某个条件元素的方案数, $g(n)$ 表示钦定 $n$ 个满足某个条件元素的方案数.

子集反演

记 $f(S)$, $g(S)$ 为两个关于集合 $S$ 的函数, 那么有

类似地, 有

Min-Max 容斥

对于一个集合 $S$, 记 $\max\{S\}$ 为集合 $S$ 中最大值, $\min\{S\}$ 为集合 $S$ 中最小值, 那么有

同时可以推广到第 $k$ 大值. 记 $\operatorname{kmax}\{S\}$ 为集合 $S$ 中的第 $k$ 大值, 那么有

同时由期望的线性性可以得到

一个常见的问题为, 询问一个集合中所有元素都出现的期望时间. 此时就可以套用该公式, 从而转为计算子集中元素第一次出现的期望时间.

参考资料