-
前置知識php
二項式反演html
\[f(n)=\sum_{i=0}^n\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}f(i) \]
-
一些定義數組
\(\max (S),\min (S)\)表示分別集合\(S\)的最大,最小元素學習
-
套路式子spa
\[\max(S)=\sum_{\varnothing\not=S\subseteq T}(-1)^{|T|-1}\min(T) \]
-
證實.net
首先咱們先設一個容斥係數\(f(x)\)htm
\[\max(S)=\sum_{\varnothing\not=S\subseteq T}f(|T|)\min(T) \]
設集合\(S\)有\(n\)個元素,咱們討論第\(k\)小元素的貢獻blog
\[\sum_{i=0}^{n-k}\binom{n-k}{i}f(i+1)=[n-k=0] \]
就是當這個元素成爲最小值時另外再選幾個比它要大的元素的方案,若是這個元素不是最大元素,要求不貢獻get
設class
\[F(n)=f(n+1),G(n)=[n=0] \]
上式爲
\[G(n)=\sum_{i=0}^n\binom{n}{i}F(i) \]
由二項式反演
\[F(n)=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}G(i) \]
代回去
\[\begin{aligned} f(n+1)&=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}[i=0]\\ &=(-1)^n\\ f(n)&=(-1)^{n-1} \end{aligned} \]
因此有
\[\max(S)=\sum_{\varnothing\not=S\subseteq T}(-1)^{|T|-1}\min(T) \]
-
用處
在指望意義下,這個式子依然成立,即
\[E(\max(S))=\sum_{\varnothing\not=S\subseteq T}(-1)^{|T|-1}E(\min(T)) \]
下面給幾個例題
-
例題
-
HDU4336
題意:有\(n\)個卡牌,每秒有\(p_i\)的機率抽到卡牌\(i\),求至少獲得每一個卡牌至少一張的指望時間
min-max容斥有個套路思想就是化max爲min,由於min通常比較好統計
令\(\max (S)\)表示集合\(S\)中最後一個得到元素的指望時間,\(\min (S)\)表明集合\(S\)中第一個得到元素的指望時間
那麼有上面的套路式子
\[\max(S)=\sum_{\varnothing\not=S\subseteq T}(-1)^{|T|-1}\min(T) \]
\(\min (T)\)就很是好求了
\[\min(T)=\frac{1}{\sum_{i\in T}p_i} \]
就是先把總機率算一下的事情
-
「HAOI2015」按位或
題意:初始有一個數\(0\),每秒有\(p_i\)的機率或(|)上整數\(i(i\in [0,2^n))\),求指望多少秒後數組變成\(2^n-1\)
令\(\max(S)\)表示最後一個或上去的指望時間,\(\min(S)\)同理
式子隨便套,考慮求出\(\min(T)\)
\[\min(T)=\frac{1}{\sum_{S\cap T\not=\varnothing}p_S} \]
考慮求底下的東西
\[\begin{aligned} \sum_{S\cap T\not=\varnothing}p_S&=\sum_{S\subseteq U} p_S-\sum_{S\cap T=\varnothing}p_S\\ &=\sum_{S\subseteq U}p_S-\sum_{\overline S\cup T=\overline S}p_S \end{aligned} \]
後面的東西取補集後是子集和的形式,咱們能夠\(FWT\)或者\(FMT\)在\(2^nn\)內求出
-
「PKUWC2018」隨機遊走
題意:樹上隨機遊走,給定起點,每次詢問至少走過一次點集的指望時間
直接套路上去考慮如何求\(\min (T)\),即第一次到達給定點集的指望步數
令\(dp_u\)表示\(u\)走到給定點集\(S\)的指望步數,\(d_u\)爲\(u\)點度數
若\(u\in S,dp_u=0\)
不然
\[\begin{aligned} dp_u&=\frac{dp_{fa}}{d_u}+\frac{\sum dp_v}{d_u}+1\\ &=A_udp_{fa}+B_u \end{aligned} \]
就先把環狀的轉移和其餘的分開搞一下,那麼
\[dp_u=\frac{dp_{fa}}{d_u}+\frac{\sum A_vdp_u+B_v}{d_u}+1 \]
化簡一下
\[(1-\frac{\sum A_v}{d_u})dp_u=\frac{dp_{fa}}{d_u}+\frac{\sum B_v}{d_u}+1 \]
把左邊除過去就能夠了
這樣的話咱們能夠\(n2^n\log 998244353\)處理出每一個集合的\(\min(S)\)了,仍然能夠預處理子集和
-
kthmax-min容斥
\[kthmax(S)=\sum_{\varnothing\not=T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T) \]
\(kthmax(S)\)表示集合中第\(k\)大的元素
證實起來和普通的差很少
設一個容斥係數\(f(n)\),統計\(n\)個元素中第\(x\)小的貢獻
\[\sum_{i=0}^{n-x}\binom{n-i}{i}f(i+1)=[n-x+1=k]\\ \sum_{i=0}^n\binom{n}{i}f(i+1)=[n=k-1]\\ f(n+1)=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}[i=k-1]\\ f(n)=(-1)^{n-k}\binom{n-1}{k-1} \]
-
參考資料
【Learning】min-max容斥以及推廣kth min-max容斥
min-max容斥