容斥原理备忘录
记录以备忘.
综述
虽然是很基础的东西, 但是不妨回头再看它一眼.
又因为本文定位于备忘, 所有不会有关于任何公式的证明, 其实就是公式的罗列… 如果真的对证明感兴趣, 不妨去文末的参看资料看看.
基础
设全集 $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$ 大值, 那么有
同时由期望的线性性可以得到
一个常见的问题为, 询问一个集合中所有元素都出现的期望时间. 此时就可以套用该公式, 从而转为计算子集中元素第一次出现的期望时间.
参考资料
- Richard A. Brualdi. 组合数学. 机械工业出版社, 2012.4.
- OI Wiki, 容斥原理, https://oi-wiki.org/math/inclusion-exclusion-principle/
- GXZlegend, 二项式反演及其应用, https://www.cnblogs.com/GXZlegend/p/11407185.html
- vfleaking, 炫酷反演魔术, http://vfleaking.blog.uoj.ac/blog/87
- GXZlegend, Min-Max容斥及其推广和应用, https://www.cnblogs.com/GXZlegend/p/11563330.html