概述
Min-Max 容斥可以将序列最大值、最小值联系起来。它有两个公式。
我们令 min(S) 表示集合 S 的最小值,max(S) 表示集合 S 的最大值,∣S∣ 表示集合 S 中元素的数量,则:
max(S)=T⊆S∑(−1)∣T∣+1min(T)
min(S)=T⊆S∑(−1)∣T∣+1max(T)
证明
我们这里证明第一个公式。第二个公式的证明方法与它类似。
对于某一个数字 x,我们求当 x 作为子集最大值时,系数之和是多少。
假设有 k 个数字 <x。如果某个子集的最大值是 x,则这 k 个数字可选可不选, x 必须选,其他数字必须不选。我们枚举这 k 个数字中被选的数量 l,此时 ∣T∣=l+1,所以 x 的系数之和就是
l=0∑k(lk)(−1)k
由二项式定理得
l=0∑k(lk)(−1)k=l=0∑k(lk)1k−i(−1)k=(1−1)k=0k
所以,当 k=0(即 x 不是最大值时),系数为 0。当 k=0(即 x 是最大值时),系数为 1。所以最终的结果就是 S 的最大值。
在期望中的应用
假设 S 是一个随机序列,则序列期望最大值、期望最小值的关系,也可以用 Min-Max 容斥来表示。
E(max(S))=T⊆S∑(−1)∣T∣+1E(min(T))
E(min(S))=T⊆S∑(−1)∣T∣+1E(max(T))
Luogu P3175 按位或
题目链接
假设我们有长度为 n 的序列 S0∼Sn−1,其中 Si 表示:数字的第 i 位经过了 Si 次操作后才变成了 1。那么题目求的是 S 的期望最大值,即 E(max(S))。
我们考虑 Min-Max 容斥。对于每个子集 T,我们求出它的期望最小值 E(min(T)),即期望下经过多少次操作,这个子集中才有数字变成了 1。
假设 P(T) 表示随机选一个数字,这个数字与 T 有交集的概率。即 P(T)=∑i∩T=∅pi。那么 E(min(T))=P(T)1。
我们考虑如何求 P(T)。正难则反,我们用 1 减去不符合条件的和:
P(T)=1−i∩T=∅∑pi=1−i⊆(U−T)∑pi
减号后面的东西可以用 FWT 求。
至此,对于每个子集 T,我们都求出了 E(min(T))。我们套用 Min-Max 容斥的公式,就可以求出 E(max(S))。
AGC038E Gachapon
题目链接
我们假设有长度为 n 的序列 S,表示第 i 个数字经过 Si 次操作后成为合法元素。那么答案就是 E(max(S))。
我们考虑一个子集 T 的 E(min(T))。它的含义是:子集内存在合法元素的期望次数。我们设所有 ai 的和为 Sa,子集 T 内 ai 的和为 ST。
我们假设每一次取数字,都可以取到 T 集合内的数字。我们设在这种条件下,子集内存在合法元素的期望次数为 E。
我们用 P(t=x) 表示子集 T 中有合法元素时,操作次数恰好等于 x 的概率;用 P(t≥x) 表示子集 T 中有合法元素时,操作次数 ≥x 的概率。那么
E=k=1∑∞k×P(t=i)=k=1∑∞j=k∑∞P(t=j)=k=1∑∞P(t≥k)
我们思考 P(t≥x) 的含义。它表示进行 x−1 次操作后,T 中没有合法元素的概率。那么上述式子的值就是,进行 0 次操作后没有合法元素的概率,加上进行 1 次后的概率,进行上第 2 次后的概率,一直加下去。
我们求进行 k 次操作后没有合法元素的概率。枚举每个数字被抽到的次数 ci,满足 ∑i∈Tci=k,ci<bi。概率可以用(按顺序依次选取的概率 × 重排后可以得到的不同方案数)求出:
(i∈T∏(STai)ci)×(∏i∈Tci!k!)=k!i∈T∏STcici!aici=STkk!i∈T∏ci!aici
此时 P(t≥k) 就是 ci 所有不同的取法的概率总和。所以
E=k=1∑∞P(t≥k)=k∑ci<bi,∑i∈Tci=k∑STkk!i∈T∏ci!aici=k∑STkk!ci<bi,∑i∈Tci=k∑ i∈T∏ci!aici
不要忘记 E 是只能选 T 中的数字时的期望。如果所有数字都可以选,那么期望下每取 STSa 个数字,可以取到一个 T 中的数字。所以:
E(min(T))=STSa×E=STSak∑STkk!ci<bi,∑i∈Tci=k∑ i∈T∏ci!aici=Sak∑STk+1k!ci<bi,∑i∈Tci=k∑ i∈T∏ci!aici
我们根据 Min-Max 容斥的公式可得:
E(max(S))=T⊆{1,2,…,n}∑(−1)∣T∣+1E(min(T))=T⊆{1,2,…,n}∑(−1)∣T∣+1Sak∑STk+1k!ci<bi,∑i∈Tci=k∑ i∈T∏ci!aici=T⊆{1,2,…,n}∑−Sak∑STk+1k!ci<bi,∑i∈Tci=k∑ i∈T∏−ci!aici
我们考虑式子右边的 ∑ci<bi,∑i∈Tci=k∏i∈T(−1)ci!aici 怎么求。设 fi,j,k 表示只从前 i 项里选,ST=j,∑i∈Tci=k 的这个式子的值。转移分两种情况。
fi,j,k←fi−1,j,k
- i 选
枚举被抽中的次数 ci∈[0,bi]。
fi,j,k←−fi−1,j−ai,k−ci×ci!aici
对所有 j,k 计算 −Sajk+1k!fn,j,k 并求和,就是最终答案。