前几天 DZYO 讲容斥的时候睡着了,还是得把这些补一下。。。
前置知识:二项式反演
二项式反演的形式就是:
f n = ∑ i = 0 n ( − 1 ) i C n i g i ⇔ g n = ∑ i = 0 n ( − 1 ) i C n i f i f_n=\sum_{i=0}^n(-1)^iC_n^ig_i⇔g_n=\sum_{i=0}^n(-1)^iC_n^if_i fn=i=0∑n(−1)iCnigi⇔gn=i=0∑n(−1)iCnifi
这个式子具有很强的对称性。
还有一个更常用的式子是这样的:
f n = ∑ i = 0 n C n i g i ⇔ g n = ∑ i = 0 n ( − 1 ) n − i C n i f i f_n=∑_{i=0}^nC_n^ig_i⇔g_n=∑_{i=0}^n(−1)^{n−i}C_n^if_i fn=i=0∑nCnigi⇔gn=i=0∑n(−1)n−iCnifi
具体的证明可以参考 Miskcoo’s Space 的 反演魔术:反演原理及二项式反演。
min-max 容斥
给定集合 S S S,设 m a x ( S ) max(S) max(S) 表示集合中的最大值, m i n ( S ) min(S) min(S) 表示集合中的最小值,那么有:
m a x ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − 1 m i n ( T ) max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}min(T) max(S)=T⊆S∑(−1)∣T∣−1min(T)
以下证明参考 ez_2016gdgzoi471 的 min-max容斥以及推广kth min-max容斥。
考虑构造一个容斥系数 f ( x ) f(x) f(x),使得:
m a x ( S ) = ∑ T ⊆ S f ( ∣ T ∣ ) m i n ( T ) max(S)=\sum_{T\subseteq S}f(|T|)min(T) max(S)=T⊆S∑f(∣T∣)min(T)
考虑到从大到小第 ( x + 1 ) (x+1) (x+1) 大的数的贡献为 ∑ i = 0 x C x i × f ( i + 1 ) \sum\limits_{i=0}^xC_x^i\times f(i+1) i=0∑xCxi×f(i+1)。
上式的意思就是枚举有哪些集合的最小值会为第 ( x + 1 ) (x+1) (x+1) 大的元素,然后乘上容斥系数。
那么有:
[ x = 0 ] = ∑ i = 0 x C x i × f ( i + 1 ) [x=0]=\sum_{i=0}^xC_x^i\times f(i+1) [x=0]=i=0∑xCxi×f(i+1)
然后二项式反演,得到:
f ( x + 1 ) = ∑ i = 0 x ( − 1 ) x − i C x i [ i = 0 ] = ( − 1 ) x f(x+1)=\sum_{i=0}^x(-1)^{x-i}C_x^i[i=0]=(-1)^x f(x+1)=i=0∑x(−1)x−iCxi[i=0]=(−1)x
也就是说, f ( x ) = ( − 1 ) x − 1 f(x)=(-1)^{x-1} f(x)=(−1)x−1。
那么把 f ( x ) f(x) f(x) 代回去即可得到 min-max 容斥的式子。
证毕。
还有 min-max 容斥的一些其他形式:
m i n ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − 1 m a x ( T ) min(S)=\sum_{T\subseteq S}(-1)^{|T|-1}max(T) min(S)=T⊆S∑(−1)∣T∣−1max(T)
这个的证明是类似的,但是好像这个不常用。
min-max 容斥还有一个比较好的性质,就是在期望的意义下它依旧成立,即:
E [ m a x ( S ) ] = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − 1 E [ m i n ( T ) ] \mathbb{E}[max(S)]=\sum_{T\subseteq S}(-1)^{|T|-1}\mathbb{E}[min(T)] E[max(S)]=T⊆S∑(−1)∣T∣−1E[min(T)]
可以根据这个来解一些期望概率的题。
例题:
- [HDU 4336]Card Collector:min-max容斥 / / /期望概率 d p dp dp。
- [HAOI 2015]按位或:min-max容斥 + + + FWT。
- [PKUWC 2018]随机游走:min-max容斥 + + + FWT + + + 期望概率 d p dp dp。
kth min-max 容斥
k t h _ m a x ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − k C ∣ T ∣ − 1 k − 1 m i n ( T ) kth\_max(S)=\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}min(T) kth_max(S)=T⊆S∑(−1)∣T∣−kC∣T∣−1k−1min(T)
它的证明其实和 min-max 容斥的证明一样,可以自己推一推。