Min-Max 容斥

Hanghang007發表於2024-04-25

Min-Max 容斥

一種關於 \(min,max\) 的容斥。

公式:

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

\(min(S),max(S)\) 分別表示 \(S\) 中的最大值和最小值。

證明:考慮列舉每個元素作為最小中的貢獻(如果有多個值相同的數再再按下標比較)

那麼小於當前元素的數不能選。假設有 \(k\) 個大於當前元素的數,則有式子:

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

也就是說只有最大值才會有 \(1\) 的貢獻。

這個式子在期望意義下依舊滿足,根據期望的線性性那麼有:

\[\begin{aligned} E(max(S))=\sum_{T\subseteq S,T\neq \varnothing}(-1)^{|T|+1}E(min(T)) &&(2) \end{aligned} \]

擴充套件式子:

\[\begin{aligned} kthmax(S)=\sum_{T\subseteq S,|T| \ge k}(-1)^{|T|-k}\binom{|T|-1}{k-1}min(T) &&(3) \end{aligned} \]

證明類似,還是列舉每個元素作為最小元素所在的貢獻。

設當前元素 \(x\) 從大到小排名為 \(p\)\(p<k\) 時貢獻為 \(0\)

否則列舉 \(T\) 的大小。

\[\begin{aligned} &\sum_{i=k}^{p}(-1)^{i-k}\binom{p-1}{i-1}\binom{i-1}{k-1} \\ =&\sum_{i=k}^{p}(-1)^{i-k}\binom{p-1}{k-1}\binom{c-k}{i-k} \\ =&\binom{p-1}{k-1}\sum_{i=0}^{p-k}(-1)^i\binom{p-k}{i} \\ =&\binom{p-1}{k-1}0^{p-k} \end{aligned} \]

只有元素 \(x\) 恰好是第 \(k\) 大的時候才會有 \(1\) 的貢獻。

P3175 HAOI2015

板子題,使用形式二轉化為求集合 \(T\) 至少一個位置 \(1\) 的期望步數。

相當於求的是所有子集的乘積和,再套一個 \(\text{FMT}\) 板子即可。

P4707 重返現世

題目求得是第 \(k\) 小元素出現的期望時間,等價於求第 \(n+1-k\) 大元素出現的期望時間。接下所有的 \(k\) 都是轉化後的。

使用形式三轉化為求集合 \(T\) 中出現第一個元素的期望時間,根據期望的線性性,轉步數為: \(\displaystyle\sum_{w\in T}\dfrac{1}{p_w}\),那麼有:

\[E(kthmax(S))=\sum_{T\subseteq S}\binom{|T|-1}{k-1}(-1)^{|T|-k}\sum_{w\in T}\dfrac{1}{p_w} \]

自然想到一個一個加物品。這種容斥式子的一個經典最佳化方式是直接將一部分記錄為權值,把不好轉移的放下標上。注意到有一個性知識

\(f_{i,j,k}\) 表示前 \(i\) 個數中選的所有數的 \(p_w=j\),第 \(k\) 大值的 \(\binom{|T|-1}{k-1}(-1)^{|T|-k}\) 的和是多少。

如果不選當前的數有轉移 \(f_{i,j,k}=f_{i-1,j,k}\)

否則選的話,會出現新的係數,比較難處理,考慮:

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

你會發現前面一坨的係數等於 \(f_{i-1,j-p_i,k}\) 記錄的,後面一坨的係數等於 \(f_{i-1,j-p_i,k-1}\) 的,那麼有:

\[f_{i,j,k}=f_{i-1,j,k}-f_{i-1,j-p_i,k}+f_{i-1,j-p_i,k-1} \]

滾動陣列最佳化即可。

[AGC038E] Gachapon

感覺這題出得非常好啊!改變了對 \(min,max\) 的刻板影響。

重新定義 \(min(S)\) 表示集合中第一個滿足出現次數 \(c_i >b_i\) 的時間,\(max(S)\) 表示最後一個,設 \(suma\)\(a\) 的總和。

那麼依舊可以套用形式二將本題轉化為求第集合 \(T\) 中第一個滿足條件的期望時間。

首先排除掉集合外元素的干擾,即期望下每 \(suma\displaystyle\sum_{w\in T}\dfrac{1}{a_w}\) 次才會選到一個集合內的元素。

然後注意到從集合內元素出現次數從 \({0,0,\cdots 0}\) 到恰好有一個數滿足 \(c_i=b_i\) 的過程中一共經過了 \(\displaystyle\sum_{w\in T}c_w\) 個狀態(最終狀態不算),那在中間的每個狀態做一的貢獻。那麼也就轉化為對於每個 \(\forall i\in T,c_i<b_i\) 的狀態,經過這裡的機率。

期望轉奇數,那麼對於一個固定狀態 \(c\),機率為:

\[\dfrac{(\sum c_i)!}{\prod c_i!}\prod(\dfrac{a_i}{\displaystyle\sum_{x\in T}a_x})^{c_i} \]

第一項為多重排列數,第二項表示生成 \(c_i\)\(i\) 的機率。

再把反演公式帶入:

\[\begin{aligned} ans&=\sum_{T\subseteq S}(-1)^{|T|+1}suma\displaystyle\sum_{w\in T}\dfrac{1}{a_w}\times \dfrac{(\sum c_i)!}{\prod c_i!}\prod(\dfrac{a_i}{\displaystyle\sum_{x\in T}a_x})^{c_i} \\ &=suma\sum_{T\subseteq S}(-1)^{|T|+1}\displaystyle\sum_{w\in T}\dfrac{1}{a_w}\times\dfrac{(\sum c_i)!}{\prod c_i!}\prod{a_i}^{c_i}\prod(\dfrac{1}{\displaystyle\sum_{x\in T}a_x})^{\sum c_i} \end{aligned} \]

跟上面類似,將一些更多的係數記錄在權值上。

\(f_{i,j,k}\) 表示前 \(i\) 個數選了若干個數使得 \(\sum a_i=j\)\(\sum c_i=k\)\((-1)^{|T-1|}\prod \dfrac{a_i^{c_i}}{c_i!}\)

的係數和。

轉移依舊分兩種,不選的話 \(f_{i,j,k}=f_{i-1,j,k}\)

選的話 \(f_{i,j,k}=-f_{i-1,j-a_i,k-c_i}\times \prod\dfrac{a_i^{c_i}}{c_i!}\)

複雜度看起來是 \(O(n^4)\) 的,(預設 \(\sum a_i,\sum b_i,n\) 同階),狀態三維轉移需要列舉 \(c_i\)

但是仔細一想 \(c_i\) 的一共的列舉量是 \(\sum b_i\) 的,攤下來就是 \(O(n^3)\) 的!

P5643 PKUWC2018 隨機遊走

依舊可以適用形式二將轉化為走到集合第一次走到 \(T\) 任意一個元素的期望時間。

讓出發點為樹的根節點,設 \(f_i\) 表示從 \(i\) 節點出發走到 \(T\) 的期望步數。

\(d_i\) 表示 \(i\) 的度數,那麼有:

\[f_i=\dfrac{1}{d_i}(f_{fa}+\sum_{j\in son_i}f_j)+1 \]

顯然 \(i\in T\) 的步數為 \(0\)

那麼可以直接高斯消元得到 \(f\) 的真實值,但是複雜度略有些爆,可能需要卡常。

注意到這題其實性質非常好,如果 \(f\) 的值只和兒子有關的話那麼就可以遞推了。唯一的為題就是 \(fa\) 的貢獻,那麼考慮設 \(f_i\)\(k_if_{fa}+b_i\) 表示。

那麼有:

\[\begin{aligned} f_i&=\dfrac{1}{d_i}(f_{fa}+\sum_{j\in son_i}(k_jf_i+b_j))+1 \\ d_if_i&=f_fa+f_i\sum_{j\in son_i}k_j+\sum_{j\in son_i}b_j \\ (d_i-\sum k_j)f_i&=f_{fa}+\sum b_j+d_i \\ f_i&=\dfrac{1}{d_i-\sum k_j}f_{fa}+\dfrac{d_i+\sum b_j}{d_i-\sum k_j} \\ k_i&=\dfrac{1}{d_i-\sum k_j},b_i=\dfrac{d_i+\sum b_j}{d-\sum k_j} \end{aligned} \]

現在轉移就跟父親節點無關了,一遍 \(\text{DFS}\) 即可求出所有值。

現在我們對於每個集合 \(T\) 都可以 \(O(n)\) 求出 \(f_{rt}\) 的值。

注意到:

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

我們處理出 \((-1)^{|T|+1}E(\min(T))\) 即可。

剩下的只剩下高位字首和即可。

P3600 隨機數生成器

還是更改 \(\min,\max\) 的定義。

\(min(S)\) 表示每次詢問的答案的最小值,\(\max(S)\) 表示最大值。

套用形式二:

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

集合 \(T\) 的答案顯然只和所包含的本質不同的位置個數(區間並)有關。

機率轉計數,設 \(f_{i,j}\) 表示 \(i\) 個數中最小值為 \(j\) 的方案數,\(sf_{i,j}\) 表示前 \(i\) 個數中最小值大於等於 \(j\) 的方案數,\(F_i\) 表示區間並大小為 \(i\) 的期望。

\[\begin{aligned} f_{i,j}&=(x-j+1)f_{i-1,j}+sf_{i-1,j+1} \\ F_{i}&=\sum_{j=1}^{n}f_{i,j}\times j \end{aligned} \]

首先如果一個區間包含另一個區間是沒有任何作用的。(如果一個大的區間被選擇了,那麼小區間選和不選分別帶來 \(1\)\(-1\) 的代價,抵消了)。那把所有包含另一個區間的區間給消除掉。再按照右端點排序。

直接記錄區間並略有些麻煩,考慮記補集大小,再設 \(g_{i,j,0/1}\) 表示前 \(i\) 個區間選了若干個區間使得區間並的 補集\(j\) 且選了奇數/偶數個區間。

\[\begin{aligned} g_{i,j,w}&=\sum_{r_p<l_i}g_{p,j-(l_i-r_p-1),w\oplus 1}+\sum_{r_p\ge l_i}g_{p,j,w\oplus 1} \end{aligned} \]

注意到 \(l,r\) 分別單調遞增,兩坨式子分別考慮,第一坨考慮對於每個 \(g_{p,j,w}\)\(r_p<l_i\) 的時候再加入貢獻,貢獻到 \(c_{j+r_p,w}\),第二託式子考慮對於每個 \(g_{p,j,w}\) 在算出的時候就貢獻到 \(d_{j,w}\),在 \(r_p<l_i\) 的時候取消貢獻即可。

那麼有:

\[g_{i,j,w}=c_{j-(l_i-1),w\oplus 1}+d_{j,w\oplus1} \]

最後再把貢獻帶入:

\[ans=\sum_{i=1}^{q}\sum_{j=0}^{r_i}(g_{i,j,1}-g_{i,j,0})F(r_i-j) \]

Become Big For Me

一道擴充套件 \(\min-\max\) 容斥題,真的很牛牛。

\(V_p(n)\) 表示最大的 \(k\),滿足 \(p^k\mid n\)

對於所有質因子 \(p\),設 \(v_p(a_i)\) 中的最小值和次小值(不要求嚴格)為 \(x_p,y_p\),那麼答案為 \(\displaystyle\prod_p p^{x_p+y_p}\),注意到操作都是跟 \(\text{lcm}\) 有關,也就是跟 \(v_p(a_i)\) 的最大值有關。套上 \(\min-\max\) 容斥有:

\[\begin{aligned} \gcd_{i\neq j} (A_i\times A_j)&=\prod_{T\subseteq S}(-1)^{|T|-1}\operatorname{lcm}(T)\left(\prod_{T\subseteq S} (-1)^{|T|-2}(|T|-1)\right ) \\ &=\prod_{T\subseteq S}(-1)^{|T|}\operatorname{lcm}(T)(|T|-2) \end{aligned} \]

這個其實應該是先對每個因子做 \(min-max\) 容斥,然後再相乘。

有一個金典的結論為我們任意一個值域為 \([1,10^6]\) 的集合 \(S\),都存在一個大小為至多為 \(7\) 的子集 \(T\) 使得 \(\gcd(T)=\gcd(S)\)

構造則可以任選一個數,將其最小冪次對應的數加入集合,再檢查這個數能否去除即可,證明見 \(CF\) 官方題解。

我們這樣選出兩組數,使得答案不變,使用的子序列總長度約為 \(O(2^k\times k^2)\),其中 \(2^k\times k\) 為操作次數,其中帶一個 \(\dfrac{1}{4}\) 的常數,足以透過。

相關文章