本文設\(\tilde f\)表示生成函式\(f\)的指數生成函式。
給定乙個數\(n\),以及權值為\(1,2,\dots,n\)的\(n\)個點,對於\(t=1,2,\dots,n\),設\(z=所有(連通塊內各點權值的最小值)的最大值\),求滿足\(z=t\)的無向圖個數。\(n\leq 5*10^5\)
最大值為\(t\)不好直接考慮,先來一波字首和,求\(z\leq t\)的無向圖個數。那麼就是要求所有權值\(>t\)的點不能單組組成連通塊。應用一般的容斥方法,統計包含某\(k\)個特定的僅由權值\(>t\)的點構成的連通塊(稱為非法連通塊)作為子集的方案,這個方案的貢獻是\((-1)^k\)。因為對於乙個恰好含有\(s\)個非法連通塊的方案,它的貢獻是\(\sum_^s (-1)^k=[s=0]\)。
那麼,對於特定的\(t\),要統計\(z\leq t\)的無向圖個數,可以先列舉之前所述的\(k\),再列舉這\(k\)個非法連通塊的總點數\(i\),用和\(\exp\)類似的方法統計總數。則可以寫成:
\[\sum_^(-1)^k\bigg(\sum_^g_\frac\bigg(\sum_^a_s)=i,a_s\in \mathbb^*}}\big(\prod_^f_\big)\bigg)\bigg)
\]其中\(f\)表示\(n\)個點組成的無向連通圖的方案數的生成函式,\(g\)表示\(n\)個點組成的無向圖的方案數的生成函式。進一步轉化式子:
\[\sum_^\frac\bigg(\sum_^i!g_\bigg(\sum_^a_s)=i,a_s\in \mathbb^*}\big(\prod_^\frac}\big)\bigg)\bigg)
\]\[\sum_^\frac\bigg(\sum_^i!g_(\tilde f^k)_i\bigg)
\]\[\sum_^i!g_\bigg(\sum_^\frac\bigg)_i
\]\[\sum_^i!g_(e^)_i\tag
\]我們考慮\(e^=\tilde g\),因此\(e^=\frac\),因此原式可轉化為:
\[\sum_^i!g_(\frac)_i
\]\[(n-t)!\sum_^g_(\frac)_i*\frac
\]顯然\(g\)可以直接求出,再利用多項式求逆求出\(\frac\),並令\(h_i=g_(\frac)_i\),則原式可轉化為卷積形式,\(\rm fft\)計算即可。
本題不需要什麼黑科技只要求逆就好了,真是清真呢。
回顧一下,之前的推導最終轉化成了\((*)\)式這樣簡單的形式,可以思考一下這一式子是否有直接的組合意義。該式的意義就在於,之前所說的容斥係數在這裡並沒有顯式的表現出來,而是隱含在了\(e^\)的係數中。將容斥係數隱含在式子中後,我們可以在外層直接列舉與容斥係數沒有直接關係的\(i\),也就是非法連通塊的總點數,從而自動達到容斥的目的。這樣的將容斥係數拆解到式子中的方法在一些組合計數問題中有時會出現,比如\(\rm cts2019\)的最後一題。
當然,正如之前的推導所示,思路比較直接的方法在本題也能得到同樣的結果。不過,如果在做組合計數時有意識的利用該方法變形,也可以大大簡化思路,甚至做到直接推導很難得到的結果。
本題是我以前和乙個現在已經是集訓隊大佬的假雪菜同學一起原創的,但這股套路的氣息讓我感覺它說不定已經在**出現過了。無論如何,如果這篇文章對還未退役的你有幫助的話,也不枉我這只退役狗在午休的時間狂碼了。不過,寫這篇文章主要還是因為我比較享受這個過程本身呢~
容斥原理,容斥係數
眾所周知,容斥原理是計數問題中最雞賊的東西 基本上很多計數問題都要用到容斥,但是有的時候你明明知道要容斥就是不知道怎麼容斥 所以特此寫在這裡總結一下 一般來說,這種容斥原理一般有n個性質,滿足第 i 個性質的元素集合為 a i 還有乙個全集 u 現在我們需要統計 ans u bigcap overl...
水果拼盤(反演求容斥係數)
出題人本意是考反演,結果沒學好期望線性可加。最近一直在練容斥反演,所以一看就上容斥反演。設f s f s 表示選的水果的集合是s的方案數,g s g s 表示選的水果是s 的子集的方案數。顯然g s g s 是非常好算的,記cn t cnt 表示拼盤裡的水果都屬於s 集的拼盤的個數,則g s ckc...
Cheerleaders(容斥定理)
題意 在乙個m行n列的矩陣裡站k個拉拉隊員,問有多少種方法,四周邊界必須有乙個隊員.這裡用到組合數加容斥定理,將重複的刪除,第一行,最後一行,第一列,最後一列.用到位運算來模擬16種情況.這裡要吐槽一下,中英文輸入法,和case中c的大小寫,wrong了無數次,最後才發現,蛋疼.include in...