「笔记」容斥原理
容斥原理
用于计算多个集合并集的大小。
先将所有 单个集合 的大小计算出来,减去所有 两个集合 相交的部分,加回所有 三个集合 相交的部分,减去所有 四个集合 相交的部分,依此类推,一直计算到 所有集合 相交的部分。
写成数学公式形式:
即为:
证明
需证明通过上述方法计算,每个元素仅被覆盖了一次。
考虑一个出现在 \(m\) 个集合中的元素 \(x\)。
按照上述方法:
- 选取一个集合时,显然 \(x\) 在其中出现次数为 \({m\choose 1}\)。
- 选取两个集合时,两集合贡献为其并集的大小。
则 \(x\) 在两集合中均出现时 才有贡献。
出现次数为 满足条件的方案数,即 \({m\choose 2}\)。
贡献为其相反数 \(-{m\choose 2}\)。 - 选取三个集合时,分析过程同上,出现次数为 \({m\choose 3}\)。
- 以此类推,选取集合数 \(>m\) 时,\(x\) 不会在并集中出现,贡献为 \(0\)。
则 \(x\) 的出现次数为:
发现这玩意挺优美,考虑二项式定理:
得证。
交集
用全集减去 补集的并集 求得,即 补集的并集 的补集。
正确性显然,略证:
\(\overline{A_i}\) 为除 \(A_i\) 外的元素,\(\overline{A_i} \cup \overline{A_j}\) 为除 \(A_i\cap A_j\) 外的元素。
\(\left|\bigcup\limits_{i=1}^n\overline{A_i}\right|\) 则为除 \(\bigcap\limits_{{i=1}}^{n}A_{i}\) 外的元素。
其补集即为交集。
min-max 容斥
设 \(S\) 是一个可重数集,\(\min\{S\},\max\{S\}\) 分别表示数集中的 最小/最大 值。
则有下式成立:
证明
以式子 1 为例:
显然,仅当 \(T = \{\{\max\{S\}\}\) 时,\(\min\{T\} = \max\{S\}\)。
(可能有多个相同的最大值,随意钦定一个即可)
对于其他子集 \(T\not= \{\{\max\{S\}\}\),考虑钦定一个数为 \(\min \{T\}\)。
设 \(\min \{T\}\) 为 \(x\),则 \(T\) 中的其他数均 \(\ge x\)。
设 \(\left|\{y\mid y\in S, y\ge x\}\right| = k\),则 \(\min \{T\}=x\) 有 \(2^{\left|S\right|-k}\) 种方案。
显然,在这 \(2^{\left|S\right|-k}\) 个子集中,\(\left|T\right|\) 为 奇/偶 数的方案各有 \(2^{\left|S\right|-k-1}\) 种,它们正负抵消,总贡献为 \(0\)。
此时仅有 \(T = \{\{\max\{S\}\}\) 时,会对答案作出 \(\max\{S\}\) 的贡献。
结论成立。
式子 2 同理可证。
写在最后
水炊老师太神了吧 /fad
单马尾文文好可爱(