min-max容斥/最值反演及其推廣


\(S\)是一個集合,\(\max(S)\)\(\min(S)\)分別表示集合中的最大值與最小值。

那么有如下式子成立:

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

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

因為證明很簡單就寫一下吧,以第一個式子為例,設\(\max(S)=x\),那么只有\(T=\{x\}\)時的\(\min(T)\)\(x\)(可能有多個相同的最大值,這時候隨便欽點一個就可以了),對於除此之外的所有\(T\),肯定至少存在一個集合中的數\(y\)使得\(\min(T \cup \{y\})=\min(T)\),假設有\(k\)個這樣的\(y\),那么從中選奇數個和選偶數個的方案數是一樣的,於是\(\min(T)\)就被抵消了。

這個式子在期望下也是成立的,即:

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

用期望的線性性證明即可。

於是就可以用來做題了,一般的套路是每個位置有概率從\(0\)變成\(1\),問都變成\(1\)的期望步數,這就是\(\max(S)\),然后就反演成\(\min(T)\),至少一個數變成\(1\)的期望就好做很多了。

\(upd\):來填坑了...現在來介紹一下最值反演的推廣:通過求\(\min\)來求第\(k\)大(\(kth\max\))。前置知識是二項式反演,如果不知道請戳這里

我們來嘗試構造一個函數\(f\),使得:

\[kth\max(S)=\sum_{T \subseteq S} f_{|T|}\min(T) \]

然后來考慮一下對於集合中第\(i\)大的元素,如果\(\min(T)\)等於這個元素,那么只有比它大的\(i-1\)個元素是可能存在的,那么它的貢獻就是:

\[\sum_{j=0}^{i-1} {i-1 \choose j} f_{j+1} \]

也就是說\(f\)需要滿足:

\[\sum_{j=0}^{i-1} {i-1 \choose j} f_{j+1}=[i=k] \]

等價於:

\[\sum_{j=0}^i {i \choose j} f_{j+1}=[i=k-1] \]

為了方便我們用\(\widehat f_i=f_{i+1}\)替換\(f\),然后用\(g_i\)表示\([i=k-1]\),那么就得到:

\[\sum_{j=0}^i {i \choose j} \widehat f_j=g_i \]

看這個是不是一個經典的二項式反演的形式呀,所以二項式反演一下:

\[\widehat f_i=\sum_{j=0}^i (-1)^{i-j} {i \choose j} g_j \]

然后因為\(g_i=[i=k-1]\),所以上面的式子只有\(j=k-1\)這一項是有貢獻的,我們再把\(f\)替換回去,得:

\[f_{i+1}=(-1)^{i-k+1} {i \choose k-1} \]

再把\(f_{i+1}\)替換成\(f_i\),最終得到:

\[f_i=(-1)^{i-k} {i-1 \choose k-1} \]

終於結束啦!

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

同時我們可以發現如果要求第\(k\)大,那么只需要計算元素個數\(\geq k\)的子集就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM