容斥与反演技巧(三)

Min-Max 容斥

简单来说,由于 \(\mathbb E[\max(x,y)]\neq \max(\mathbb E[x],\mathbb E[y])\),而如果计算 \(\mathbb E[\min(x,y)]\) 比计算 \(\mathbb E[\max(x,y)]\) 容易得多,我们就通常使用 min-max 容斥转为计算 \(\mathbb E[\min(x,y)]\)

对于上面这种 \(x,y\) 的情况,实际上只需要注意到 \(\max(x,y)=x+y-\min(x,y)\),就有

\[\mathbb E[\max(x,y)]=\mathbb E[x]+\mathbb E[y]-\mathbb E[\min(x,y)] \]

上面这一步只利用了期望的线性性,因此是正确的。对于多元的情况,我们有

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

这个式子怎么来的呢,其实就是利用二项式反演 \([n=0]=\sum_{i=0}^n(-1)^i\binom{n}{i}\)(或者说是 \([S=\varnothing]=\sum_{T\subseteq S}(-1)^{|T|}\)),考虑将 \(S\) 中元素从大到小排列后第 \(i\) 个元素的系数,发现他就是

\[\sum_{S\subseteq \{1,2,\cdots,i-1\}}(-1)^{|S|}=[\{1,2,\cdots,i-1\}=\varnothing]=[i=0] \]

因此自然有 \(\max(S)=\sum_{T\neq \varnothing,T\subseteq S}(-1)^{|T|+1}\min(T)\)。换成 \(\min\) 也同理。

如果要算第 \(k\) 大即 \(\max_k(S)\),只需注意到

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

然后想一下我们应该怎么构造这个式子。显然 \(T\) 那边应该给一个系数 \((-1)^{|T|-k+2}=(-1)^{|T|+k}\),但是如果直接算的话系数会变成 \(\binom{n}{i}\) 而非 \(\binom{n-k+1}{i-k+1}\),因此我们需要乘上一个

\[\dfrac{\binom{n-k+1}{i-k+1}}{\binom{n}{i}}=\dfrac{\binom{i}{i-k+1}}{\binom{n}{n-k+1}} \]

你发现由于 \(n>k-1\) 的时候这东西都是 \(0\) 所以分母没有意义;\(n=k-1\) 的时候分母是 \(1\) 也没有意义,因此不妨直接去掉分母,就有

\[\max\nolimits_k(S)=\sum_{|T|\ge k,T\subseteq S}\binom{|T|-1}{|T|-k}(-1)^{|T|+k}\min(T) \]

对于 \(\min_k\) 也一样。注意到 \(|T|<k\)\(\binom{|T|-1}{|T|-k}\) 就是 \(0\),因此求和条件中的 \(|T|\ge k\) 可以去掉。只不过此时需要认为 \(\min(\varnothing)=0\),或者限定 \(T\neq\varnothing\)

HDU4336

显然可以状压 DP 做到 \(O(n2^n)\)

考虑 min-max 容斥:\(t_i\) 表示 \(i\) 第一次出现的时间(这是一个随机变量),则所求即为

\[\mathbb E[\max(t_1,t_2,\cdots,t_n)]=\sum_{T\neq \varnothing}\mathbb E[\min_{x\in T}t_x] \]

注意到 \(\mathbb E[\min_{x\in T}t_x]\) 可以看作每秒有 \(\sum_{x\in T}p_x\) 的概率命中,问首次命中的期望时间。

显然,这就是 \(\frac{1}{\sum_{x\in T}p_x}\)。因此答案就是

\[\sum_{T\neq \varnothing}\dfrac{(-1)^{|T|+1}}{\sum_{x\in T}p_x} \]

可以做到 \(O(2^n)\)貌似并没有很大提升orz

LOJ2127

\(t_i\) 表示期望意义下第一次 \(i\in S\) 的时间,考虑怎么算 \(E[\min_{x\in T}t_x]\)

发现这就是 \(\dfrac{1}{\sum_{T\cap C\neq \varnothing}p[C]}\),FWT 预处理高维前缀和即可。时间复杂度 \(O(n2^n)\)

Luogu4707

\(t_i\) 为收集到 \(i\) 的期望时间,所求即 \(E[\min_k\{t_i|i=1,2,\cdots,n\}]\)

注意到 \(n-k\le 10\),我们不妨取新的 \(k\leftarrow n-k+1\),然后求 kthmax 的期望,且 \(1\le k\le 11\)

套用 minmax 容斥的式子:

\[\mathbb E[\max\nolimits_k(S)]=\sum_{T\subseteq S}\binom{|T|-1}{k-1}(-1)^{|T|+k}\min(T) \]

考虑 \(\mathbb E[\text{min}(T)]\),发现他就是 \(\frac{m}{\sum_{x\in T}p_x}\)。因此上式即

\[\sum_{T}\binom{|T|-1}{k-1}(-1)^{|T|+k}\dfrac{m}{\sum_{x\in T}p_x} \]

注意到 \(\sum p_x=m\le 10^4\),考虑枚举 \(\sum p_i\)。记 \(\text{sum}(T)=\sum_{x\in T}p_x\)

\[\sum_{i=0}^m\frac{ m}{i}\sum_{\text{sum}(T)=i}\binom{|T|-1}{k-1}(-1)^{|T|+k} \]

现在只需要算出后面那一项。发现这只和 \(|T|\) 有关,并且带了一个下降幂,考虑设计

\[f(i,j,k)=\sum_{\text{sum}(T)=j,T\subseteq[i]}\binom{|T|-1}{k-1}(-1)^{|T|+k} \]

考虑转移,如果选了当前的 \(p_i\),当 \(k>1\) 时,原来的 \(\binom{|T|-1}{k-1}(-1)^{|T|+k}\) 会变为

\[\binom{|T|}{k-1}(-1)^{|T|+k+1}=-\binom{|T|-1}{k-1}(-1)^{|T|+k}+\binom{|T|-1}{k-2}(-1)^{|T|+k-1} \]

而当 \(k=1\) 时,相当于只添了一个负号,因此有

\[f(i,j,k)=\begin{cases}f(i-1,j,k)-f(i-1,j-p_i,k)+f(i-1,j-p_i,k-1)&,k>1\\f(i-1,j,k)-f(i-1,j-p_i,k)&,k=1\end{cases} \]

边界条件应当为 \(f(0,0,k)=\binom{-1}{k-1}(-1)^{0+k}=-1\)。答案即为 \(\sum \frac{m}{j}f(n,j,k)\)

时间复杂度 \(O(nmk)\)

ABC242Ex

\(t_i\) 表示 \(i\) 第一次被染色的时间,则答案为 \(E[\max\{t_i\}]\)。套路地进行 min-max 容斥,有

\[\mathbb E[\max\{t_i\}]=\sum_{T\subseteq S}(-1)^{|T|+1}\mathbb E[\min_{i\in T}t_i] \]

考虑怎么算 \(E[\min_{i\in T}t_i]\),发现如果能算出与 \(T\) 有交的区间 \([L_i,R_i]\) 个数 \(x\),那么相当于每次有 \(\frac{x}{m}\) 的概率命中,一旦命中就立即结束;因此有 \(E[\min(T)]=\frac{m}{x}\)。记这个 \(x\)\(f(T)\)

提前把 \([L_i,R_i]\) 二维前缀和一手,设 \(\text{dp}(i,j)\) 表示从前 \(i\) 个数中选子集,且必须选 \(i\),且 \(f(T)=j\) 的方案数,然后枚举上一个选的位置直接 DP 就是 \(O(n^2m)\) 的,可以通过。

ABC242F

做了这么多 minmax 容斥来道简单题换换心情

不难发现,只需要算出 \(f(i,j),g(i,j)\) 表示在 \(i\)\(j\) 列中放黑白棋子使得每行每列至少一个的方案数。

答案就是

\[\sum_{x_1+x_2\le N,y_1+y_2\le M}f(x_1,y_1)g(x_2,y_2)\binom{N}{x_1\quad x_2\quad N-x_1-x_2}\binom{M}{y_1\quad y_2\quad M-y_1-y_2} \]

易知

\[f(i,j)=\sum_{0\le x\le i,0\le y\le j}(-1)^{x+y}\binom{i}{x}\binom{j}{y}\binom{(i-x)(j-y)}{B} \]

预处理组合数即可。复杂度 \(O(N^2M^2)\)模数可以不是质数的

LOJ2542

\(t_i\) 表示第一次走到 \(i\) 的时间,直接套 min-max 容斥,考虑咋算 \(\min(S)\)

发现相当于删掉 \(S\) 以内的点,然后算第一次走出这个连通块的期望步数。

可以直接高斯消元然后 FMT 一手做到 \(O(n^32^n)\)

考虑使用树上高消,\(f_u\) 表示从 \(u\) 开始走,第一次走出去期望要走多少步。那么有

\[f_u=\dfrac{1}{d_u}\left(f_{\text{fa}(u)}+\sum_{v\in\text{son}(u)}f_v\right)+1=1+\dfrac{1}{d_u}f_{\text{fa}(u)}+\dfrac{1}{d_u}\sum_{v\in\text{son}(u)}f_v \]

其中 \(d_u\) 表示点 \(u\) 的度数,包括父亲。

我们考虑把 \(f_u\) 写成 \(A_u\times f_{\text{fa}(u)}+B_u\) 的形式,那么有

\[f_u=1+\dfrac{1}{d_u}f_{\text{fa(u)}}+\dfrac{1}{d_u}\sum_{v\in \text{son}(u)}A_v\times f_u+B_v\qquad\qquad(u\neq \text{root}) \]

移项有

\[\left(1-\dfrac{\sum_{v\in\text{son}(u)}A_v}{d_u}\right)f_u=1+\dfrac{1}{d_u}f_{\text{fa}(u)}+\dfrac{\sum_{v\in \text{son}(u)}B_v}{d_u}\qquad\qquad(u\neq \text{root})\\ f_u=\dfrac{d_u+f_{\text{fa}(u)}+\sum_{v\in \text{son}(u)}B_v}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root})\\ \]

整理得

\[A_u=\dfrac{1}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root})\\ B_u=\dfrac{d_u+\sum_{v\in\text{son}(u)}B_v}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root}) \]

最后考虑根节点,有

\[f_{\text{root}}=1+\dfrac{1}{d_\text{root}}\sum_{v\in \text{son}(u)}f_v=1+\dfrac{1}{d_\text{root}}\sum_{v\in \text{son}(u)}A_v\times f_{\text{root}}+B_v\\\iff f_{\text{root}}=\dfrac{d_{\text{root}}+\sum_{v\in\text{son}(u)}B_v}{d_{\text{root}}-\sum_{v\in\text{son}(u)}A_v} \]

再自顶向下根据 \(A,B\) 即可解的每个点的 \(f\) 值。总时间复杂度 \(O(n2^n\log P+Q)\)

PKUSC2023 D1T2

\(n\) 个人在玩狼人杀,其中第 \(m\) 个是狼人。在剩下的 \(n-1\) 个人中等概率随机一个人作为预言家,预言家每次会随机选择一个区间 \([l,r]\)(即每个区间 \(\frac{2}{n(n+1)}\) 的概率),他可以知道狼人是否在这个区间内。问期望意义下预言家期望多少步能确定谁是狼人。

具体来说,如果预言家是 \(i\),那么对他而言的初始“候选狼人集合”为 \([1,i)\cup (i,n]\),如果他询问了 \([l,r]\),此时若狼人在 \([l,r]\) 内,则候选狼人集合由 \(S\leftarrow S\cap [l,r]\);否则 \(S\leftarrow S\cap([1,n]-[l,r])\)。该预言家找到狼人的期望步数就是 \(|S|\) 第一次变成 \(1\) 的期望步数。对某个质数取模。

数据范围:\(2\le n\le 150,1\le m\le n\)

\(t_i\) 表示 \(i\) 第一次被排除的时间,其中 \(i\neq m\),那么就是要对每个 \(x\)\(\mathbb E[\max_{i\neq x} t_i]\)

考虑 \(\mathbb E[\min_{i\in S} t_i]\) 咋算,发现要使 \(S\) 中一个元素都不能被排除,需要有:

  • 若区间包含了 \(m\),那么区间必须包含 \(S\) 中的所有数。
  • 若区间没有包含 \(m\),那么区间必须不包含 \(S\) 中的任意数。

满足这个条件的区间个数如果是 \(x\),那么期望就是 \(\frac{C_{n}^2}{C_n^2-x}\)

\(\min(S)=x,\max(S)=y\),那么第一种区间只需要满足 \(l\le \min(x,m),r\ge \max(y,m)\)

考虑第二种区间怎么算,发现可以做个 DP 在 \(O(n^4)\) 内算出 \(f(i,j)\) 表示 \(i\) 个位置选子集,最后空出来 \(j\) 个区间的方案数。然后考虑 \(m\) 这个位置,发现只要转移的时候特殊处理一下即可。从每个位置开始做 DP 可以做到 \(O(n^5)\)。对于预言家的问题,只需要在状态中记录 \(0/1\) 即可。

然后考虑优化,发现可以不枚举开头,改为按 \(m\to n\to 1\to n-1\) 做 DP,经过 \(n\) 的时候特殊算区间个数。然后就不需要枚举开头了,复杂度 \(O(n^4)\)

posted @ 2023-05-12 15:33  云浅知处  阅读(119)  评论(0编辑  收藏  举报