min-max 容斥
前置知识
请牢记二项式定理:
\((a+b)^n = \sum\limits_{i=0}^{n}{\dbinom{n}{i}a^{n-i}b^i}\)
或另外一种形式:
\((a+1)^n = \sum\limits_{i=0}^{n}{\dbinom{n}{i}a^{n-i}} = \sum\limits_{i=0}^{n}{\dbinom{n}{i}a^{i}}\)
min-max 容斥
学习
min-max 容斥的主要思想是给每个子集分配一个系数(然后每个属于子集的 \(a_i\) 的系数加上该系数),使得 \(S\) 的最大值 \(a_i\) 的系数为 \(1\),其余为 \(0\)。
问:一个集合 \(S\),每次可以询问一个子集的 min 值,如何求 \(S\) 的 max 值?
\(S\) 的 max 等于 \(\sum\limits_{T\subseteq S}{(-1)^{|T| - 1}min(T)}\)。
证明:
- 假设 \(S\) 是从大到小排序的,长度为 \(n\)。
- 那么 \(T\subseteq S\) 满足 \(min(T) = a_k\) 的系数之和(\((-1)^{|T| - 1}\))是多少?
- 是 \(\sum_{l = 0}^{k - 1}{\dbinom{k-1}{l}(-1)^{l}}\)
- 注意到这就是二项式定理,等于 \((-1+1)^{k-1}\),即 \(0^{k-1}\)
- 显然只有当 \(k = 1\) 的时候(即最大值)系数之和为 \(1\),其他都是 \(0\)。
注意到 min-max 容斥的原理是配系数,而期望可以加和,所以有套期望的 min-max 容斥公式(\(E\) 表示期望):
\(E(max(S)) = \sum\limits_{T\subseteq S}{(-1)^{|T| - 1}E(min(T))}\)
min-max 容斥的 \(min\) 和 \(max\) 反过来同理。
练习
如果题目说求 “所有都到达的期望步数” 或 “至少到达一个的期望步数” 等类似的话,都应该考虑一下 min-max 容斥。
- 例题:https://www.luogu.com.cn/problem/P3175
- 发现每一位的期望是独立的,然而题目要求得就是 \(E(max(S))\),min-max 容斥转化为求子集 \(T\) 的 \(E(min(T))\)。
- 发现是一个无限等比且等差数列求和,推一推就可以做了,暴力枚举子集这是 \(O(3^n)\) 的,需要高维前缀和优化。
- 练习题:https://www.luogu.com.cn/problem/P5643
- 练习题:https://www.luogu.com.cn/problem/AT_abc331_g
拓展 min-max 容斥
学习
蒟蒻不太懂证明。
\(E(max(S)) = \sum\limits_{T\subseteq S 且 |T| \ge k}{(-1)^{|T| - 1}\dbinom{|T|-1}{k-1}E(min(T))}\)
https://www.luogu.com.cn/article/t2zqvdou 里有证明

浙公网安备 33010602011771号