Min-max容斥学习笔记

Min-max容斥

给定集合 S S S, 其中最大的值是 max ⁡ ( S ) \max(S) max(S), 最小的值是 min ⁡ ( S ) \min(S) min(S), 则有下式
max ⁡ ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − 1 min ⁡ ( T ) \max(S) = \sum _ {T \subseteq S} (-1)^{|T| - 1} \min(T) max(S)=TS(1)T1min(T)
考虑构造容斥系数 f ( i ) f(i) f(i), 使得下式成立
max ⁡ ( S ) = ∑ T ⊆ S f ( ∣ T ∣ ) min ⁡ ( T ) \max(S) = \sum _ {T \subseteq S} f(|T|)\min(T) max(S)=TSf(T)min(T)
我们单独考虑每一个元素, 设当前元素是第 x x x大, 则有
∑ i = 0 x − 1 ( x − 1 i ) f ( i + 1 ) = [ x = 1 ] \sum _ {i = 0} ^ {x - 1}\binom{x - 1}{i}f(i + 1) = [x = 1] i=0x1(ix1)f(i+1)=[x=1]
由二项式定理可知
f ( i + 1 ) = ( − 1 ) i → f ( i ) = ( − 1 ) i − 1 f(i + 1) = (-1)^i \to f(i) = (-1)^{i - 1} f(i+1)=(1)if(i)=(1)i1

按位或

设 $ \max(S) $ 表示 S S S 中最后一个元素被与出的期望时间, $ \min(S) $ 表示 S S S 中第一个元素被与出的期望时间, 答案为
∑ T ( − 1 ) ∣ T ∣ − 1 min ⁡ ( T ) \sum _ {T} (-1) ^ {|T| - 1}\min(T) T(1)T1min(T)
p ( S ) p(S) p(S) 为取到 S S S 中任意一个元素的概率, 则有
min ⁡ ( S ) = ∑ i = 1 + ∞ i ⋅ p ( S ) × ( 1 − p ( S ) ) i − 1 → 1 p ( S ) \min(S) = \sum _ {i = 1} ^ {+\infty} i \cdot p(S) \times (1 - p(S)) ^ {i - 1} \to \frac{1}{p(S)} min(S)=i=1+ip(S)×(1p(S))i1p(S)1

p ( S ) = ∑ T ∩ S ≠ ∅ a S p(S) = \sum _ {T \cap S \ne \varnothing}a_S p(S)=TS̸=aS

这个东西不太好求, 我们考虑去求 1 − p ( S ) 1 - p(S) 1p(S)
1 − p ( S ) = ∑ T ⊆ ∁ U S a T 1 - p(S) = \sum _ {T \subseteq \complement_U^S} a_T 1p(S)=TUSaT
这个就相当于求 S S S 的补集的子集和, FMT \textbf{FMT} FMT 一下就好了.

随机游走

f [ S ] [ i ] f[S][i] f[S][i] 表示从 i i i 出发第一次到达点集 S S S 的期望步数, 枚举一个集合, 然后有转移
f [ S ] [ i ] = ∑ v ∈ s o n i f [ S ] [ v ] d e g i + f [ S ] [ f a i ] d e g i + 1 f[S][i] = \sum _ {v \in son_i} \frac{f[S][v]}{deg_i} + \frac{f[S][fa_i]}{deg_i} + 1 f[S][i]=vsonidegif[S][v]+degif[S][fai]+1
这个东西可以用树上高消的小 t r i c k trick trick 优化一下, 复杂度 O ( n ) O(n) O(n), 总复杂度 , O ( 2 n n ) ,O(2^nn) ,O(2nn), 则有
max ⁡ ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ f [ T ] [ x ] \max(S) = \sum _ {T \subseteq S} (-1)^{|T|}f[T][x] max(S)=TS(1)Tf[T][x]
这个东西可以直接用 FMT \textbf{FMT} FMT 预处理一下, 总复杂度为 O ( 2 n n ) O(2^n n) O(2nn)

Kth-Min-max容斥

我们定义一个集合 S S S 中的第 k k k 大为 Kth-Max ( S ) \textbf{Kth-Max}(S) Kth-Max(S), 集合 S S S 中的最小值为 $ \min(S) $, 则有
Kth-Max ( S ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ − k ( ∣ T ∣ − 1 k − 1 ) min ⁡ ( T ) \textbf{Kth-Max}(S) = \sum _ {T \subseteq S} (-1) ^ {|T| - k} \binom{|T| - 1}{k - 1}\min(T) Kth-Max(S)=TS(1)Tk(k1T1)min(T)

重返现世

f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k] 表示考虑了前 i i i 个, 满足 ∑ i ∈ T p i = j \sum _ {i \in T} p_i = j iTpi=j 且参量为 k k k 的集合 T T T 的下式的和 :
∑ T ( − 1 ) ∣ T ∣ − k ( ∣ T ∣ − 1 k − 1 ) \sum _ {T} (-1) ^ {|T| - k} \binom{|T| - 1}{k - 1} T(1)Tk(k1T1)
考虑第 i i i 个数是否加入集合, 如果不加入直接从 f [ i − 1 ] [ j ] [ k ] f[i - 1][j][k] f[i1][j][k] 转移, 否则 :
S ( T ) = ∑ i ∈ T p i S(T) = \sum _ {i \in T} p_i S(T)=iTpi
f [ i ] [ j ] [ k ] = ∑ S ( T ) = j ( − 1 ) ∣ T ∣ − k ( ∣ T ∣ − 1 k − 1 ) = ∑ S ( T ) = j − p i ( − 1 ) ∣ T ∣ − k + 1 ( ∣ T ∣ k − 1 ) = ∑ S ( T ) = j − p i ( − 1 ) ∣ T ∣ − k + 1 ( ( ∣ T ∣ − 1 k − 2 ) + ( ∣ T ∣ − 1 k − 1 ) ) = ∑ S ( T ) = j − p i ( − 1 ) ∣ T ∣ − ( k − 1 ) ( ∣ T ∣ − 1 ( k − 1 ) − 1 ) + ( − 1 ) ∣ T ∣ − k + 1 ( ∣ T ∣ − 1 k − 1 ) = ∑ S ( T ) = j − p i ( − 1 ) ∣ T ∣ − ( k − 1 ) ( ∣ T ∣ − 1 ( k − 1 ) − 1 ) − ( − 1 ) ∣ T ∣ − k ( ∣ T ∣ − 1 k − 1 ) = f [ i − 1 ] [ j − p i ] [ k − 1 ] − f [ i − 1 ] [ j − p i ] [ k ] \begin{aligned} f[i][j][k] &= \sum _ {S(T) = j} (-1) ^ {|T| - k} \binom{|T| - 1}{k - 1}\\ &=\sum _ {S(T) = j - p_i} (-1) ^ {|T| - k + 1} \binom{|T|}{k - 1}\\ &=\sum _ {S(T) = j - p_i} (-1) ^ {|T| - k + 1} \left(\binom{|T| - 1}{k - 2} + \binom{|T| - 1}{k - 1}\right)\\ &=\sum _ {S(T) = j - p_i} (-1) ^ {|T| - (k - 1)}\binom{|T| - 1}{(k - 1) - 1} + (-1) ^ {|T| - k + 1}\binom{|T| - 1}{k - 1}\\ &=\sum _ {S(T) = j - p_i} (-1) ^ {|T| - (k - 1)}\binom{|T| - 1}{(k - 1) - 1} - (-1) ^ {|T| - k}\binom{|T| - 1}{k - 1}\\ &=f[i - 1][j - p_i][k - 1] - f[i - 1][j - p_i][k ] \end{aligned} f[i][j][k]=S(T)=j(1)Tk(k1T1)=S(T)=jpi(1)Tk+1(k1T)=S(T)=jpi(1)Tk+1((k2T1)+(k1T1))=S(T)=jpi(1)T(k1)((k1)1T1)+(1)Tk+1(k1T1)=S(T)=jpi(1)T(k1)((k1)1T1)(1)Tk(k1T1)=f[i1][jpi][k1]f[i1][jpi][k]
边界条件非常的神奇, f [ 0 ] [ 0 ] [ 0 ] = 0 , ∀ k > 1 , f [ 0 ] [ 0 ] [ k ] = − 1 f[0][0][0] = 0, \forall k > 1, f[0][0][k] = -1 f[0][0][0]=0,k>1,f[0][0][k]=1, 这个可以手玩一下

这道题巧妙的运用了组合数的递推式, 还是很妙的.

你可能感兴趣的:(OI学习笔记,min-max容斥)