笔记:min-max 容斥

min-max 容斥笔记

原理

给定一个集合 \(U\) ,对于其一个子集 \(S\) ,设 \(\min(S)\)\(S\) 内部的最小值,\(\max(S)\)\(S\) 内部的最大值,有关系:

\[\min(S)=\sum_{T \subseteq S} (-1)^{|T|+1} \max(T) \]

\[\max(S)=\sum_{T \subseteq S} (-1)^{|T|+1} \min(T) \]

推导一下,以最小值(第一个式子)的容斥为例,先考虑 \(S\) 互不相同的情况,设 \(S_{1,2,\cdots |S|}\) 中最小值的下标是 \(S_k\)

\(\max(T)=\min(S)\) ,则只有可能 \(T=\{s_k\}\) ,此时 \((-1)^{|T|+1}=1\)

\(\max(T)\) 是其他值,不妨设为 \(A\) ,我们设 $U = {s_i | s_i < \max(T)} $ ,有 \(|U|>0\) ,则使 \(\max(T)=A\) 的集合就有 \(2^{|U|}\) 种,这其中大小为奇数的数量和偶数的数量是相等的,根据式子,互相抵消了。

为什么 \(\max(T)=\min(S)\) 时没有互相抵消,因为此时 \(|U|=0\) ,没有能抵消的。

\(S\) 元素可以相同,我们加入下标为第二关键字,将 \(S\) 变为互不相同的即可。

性质:这个式子对期望也是成立的。

扩展

试求 \(\operatorname{kthmax(S)}\) ,先说结论:

\[\operatorname{kthmax(S)}=\sum_{T \subseteq S} (-1)^{|T|-k} \binom{|T|-1}{k-1} \min(T) \]

我们求出 \(\operatorname{kthmax(S)}=\sum F(|T|) \min(T)\) 。考虑 \(\min(T)\)\(S\) 中的第 \(p\) 大,那 \(\min(T)\) 的贡献总系数是:

\[g(p)=\sum_{i=0}^{p-1} \binom{p-1}{i} F(i+1) \]

我们需要 \(g(p)=[p=k]\) ,改一下这个式子:

\[g(p+1)=\sum_{i=0}^{p} \binom{p}{i} F(i+1) \]

是二项式反演,转换一下( \(g(p+1)=[p=k-1]\) ):

\[F(p+1)=\sum_{i=0}^{p}(-1)^{p-i}\binom{p}{i}[i=k-1] \]

\[F(p+1)=(-1)^{p-k+1}\binom{p}{k-1} \]

\[F(p)=(-1)^{p-k}\binom{p-1}{k-1} \]

同样,对期望成立。

例题

有时候求一边容易,求另一边很难,就可以这样容斥。

[HAOI2015] 按位或

题目

计数器 \(a\) 初始为 \(0\) ,每一次随机选择 \([0,2^n-1]\) 的一个数字 \(k\) ,选则 \(k\) 的概率是 \(p_k\) ,且 \(\sum p_i=1\) ,令 $a=a | k $ ,期望多少次后 \(a\) 变成 \(2^k-1\)\(n \leq 20\)

  • 题解

一个误区:\(E(\max(a,b)) \not ={\max(E_a,E_b)}\) ,所以不能直接求每一位变成 \(1\) 的期望直接取最大。

我们肯定要求 \(E(\max(U))\) ,即全集下最后一个元素变成 \(1\) 的期望时间,对其容斥后变成求 \(E(\min(S))\) ,有:

\[E(\min(S))=\sum_{k=1}^{\infty} k \times P(\min(S)=k) \]

也就是前 \(k-1\) 秒都没有 \(S\) 中的元素,第 \(k\) 秒出现了,于是:

\[P(\min(S)=k)=P(S)\times P(S^\complement)^{k-1} \]

即一次操作后只选择了 \(S\) 的子集的概率,这个可以预处理,不妨设这两个概率为 \(A,B\)

\[E(\min(S))=A\times \sum_{k=1}^{\infty} k B^{k-1} \]

\(B<1\) ,后面的式子收敛,同时 \(A=(1-B)\) ,最后:

\[E(\min(S))=\frac{A}{(1-B)^2}=\frac{1}{1-B}=\frac{1}{P(S)} \]

\(P(S)\) 用子集和就行了。

事实上这个式子是离散几何分布的期望,有 \(E(X)=\frac{1}{P(X)}\)

宾果游戏

集训赛的题目,可以放上来吗(

一个 \(n \times m\) 的表格,一些格子被特殊标记。每时刻等概率随机选一个格子,若不是被标记的格子,就涂黑,否则什么也不做。期望多少次后有一行或一列被涂黑。

\(nm \leq 10^6\)

  • 题解

把行,列标号,标成 \(n+m\) 个构成集合 \(U\) ,我们要求 \(E(\min(U))\) ,很难求出,容斥一下,变为求 \(E(\max(S))\)

能得出 \(E(\max(S))\) 表示将一些行,一些列组成的网络全部涂黑的期望次数。可能的 \(S\) 很多,但网络格子数是有限的,实际上 \(E(\max(S))=E(\operatorname{cnt(S)})\)\(\operatorname{cnt(S)}\) 表示 \(S\) 代表的网格有多少个格子,若 \(S\)\(r\)\(c\) 列,\(\operatorname{cnt(S)}=mr+nc-rc\) ,我们可以预处理出每个 \(\operatorname{cnt(S)}\) 有多少个 \(S\)

现在求 \(E(\operatorname{cnt(S)})\) 即涂上 \(\operatorname{cnt(S)}\) 个格子的期望,递推一下得到:

\[E(\operatorname{cnt(S)})=\sum_{i=1}^{\operatorname{cnt(S)}} \frac{nm}{i} \]

找出完全没有被标记的行列数量,枚举行列数量就行。

[PKUWC2018] 随机游走

对一棵树,从 \(x\) 点出发,随机游走,每次询问一个集合,问期望多少次能经过集合内的所有元素,\(n \leq 18\)

  • 题解

这题的难点实际不在容斥上。

询问是一个 \(\max\) 的形式,转成 \(\min(S)\) 表示至少走到 \(S\) 内一个点的期望,现在求 \(\min(S)\)

\(x\) 起点,可以从上往下递推,设 \(f_u\) 为从 \(u\) 走,走到 \(S\) 的期望:

\[f_u =\begin{cases} \frac{1}{deg_u}(f_{fa}+\sum_{v \in son_u}f_v) +1 & u \notin S \\ 0 & u \in S \end{cases} \]

直接消元,复杂度 \(O(n^3 2^n)\) ,需要优化。

树上消元:树上的随机游走存在递推关系,我们设 \(f_u=k_u f_{fa}+b_u\) ,有:

\[f_u = \frac{1}{deg_u}(f_{fa}+\sum_{v \in son_u} (k_vf_u+b_v)) +1 \]

移项转换得到:

\[f_u=\frac{1}{deg_u-\sum k_v} f_{fa}+\frac{deg_u+\sum b_v}{deg_u-\sum k_v} \]

就这样我们推出了 \(k_u,b_u\) ,可以发现这个式子只和儿子有关,搜索一遍就出来了。对于 \(u \in S\) ,其 \(f_u=0\) ,那么可以设 \(k_u=b_u=0\) ,对于根节点,它没有父节点,所以 \(f_{rt}=b_{rt}\)

现在我们求出 \(\min(S)\) 了,直接做个子集求和,询问就能直接输出。

复杂度 \(O(n2^n+Qn)\) ,忽略求逆元的部分。

对于树上的随机游走,通常存在递推公式代替消元

代码

posted @ 2025-03-27 18:19  蒻蒻虫  阅读(83)  评论(0)    收藏  举报