奇怪的基礎容斥數學課件


子集反演

一般有一個很套路的方法。

比如現在有一個全集條件集合 \(U\),現在要求恰好 \(S\) 集合滿足,\(U-S\) 集合不滿足的方案數,設其為 \(f_S\),然而這個並不能直接算出。有一個比較好算的東西是,欽定 \(T\) 集合滿足,不管 \(U-T\) 集合是否滿足的方案數,設其為 \(g_T\)

顯然有 \(g_S=\sum\limits_{S \subseteq T} f_T\),然后我們可以根據子集反演得到 \(f_S=\sum \limits_{S \subseteq T} g_T(-1)^{|T|-|S|}\),這樣的話就可以算出要求的方案數了。

這個玩意正確的原因是這樣的:可以直接把前一個式子代入后一個式子,會得到
\(f_S=\sum \limits_{S \subseteq T} \sum \limits_{T \subseteq Z}f_Z (-1)^{|T|-|S|}\)
\(=\sum \limits_{S\subseteq Z}f_Z\sum \limits_{S \subseteq T,T \subseteq Z} (-1)^{|T|-|S|}\)
\(=\sum \limits_{S\subseteq Z}f_Z\sum \limits_{T \subseteq Z-S} (-1)^{|T|}\)
\(=\sum \limits_{S\subseteq Z}f_Z[S=Z]=f_S\)

小星星

這題中的限制實際上就是:

  1. \(n\) 個點均出現在用來編號的排列中。
  2. 相鄰的編號存在邊。

所以考慮這樣一個做法,首先將排列這個限制去掉,轉化為任意編號。

欽定集合 \(S\) 可以出現在編號序列中,然后做一個簡單的樹形 \(dp\) 來統計這樣的方案數 \(g_S\)

套用上面的式子,現在求的就是 \(f_U\) ,有 \(ans=\sum \limits_{S} g_S (-1)^{|U|-|S|}\)

Ribbons on Tree

要求每條邊都能被至少一條路徑覆蓋。

其實只需要欽定若干條邊沒有被覆蓋,這樣就會形成若干個聯通塊。

對於一個節點數為 \(n\) 的聯通塊,不需要保證聯通塊內的邊都被覆蓋,所以任意匹配的方案數就是 \([2|n] (n-1)!!\)

答案就是對所有欽定的邊集對應的方案數乘上容斥系數求和,這個東西只要記一下這個聯通塊已經放了多少個點,寫一個 \(O(n^2)\) 的樹形 \(\text{dp}\) 就可以解決,解題的思想就是用 \(\text{dp}\) 來優化子集反演中暴力枚舉條件集合的過程。

二項式反演

這個東西就與子集反演比較類似了,一般應用於現在的條件集合與具體哪些沒有關系,而只與集合大小有關。

同樣欽定若干個條件滿足,設為 \(g_i\),將恰好的方案數設為 \(f_i\),有 \(g_i=\sum \limits_{i \leq k}f_k\binom{k}{i}\)
然后根據二項式反演可以得到 \(f_i=\sum \limits_{i \leq k}g_k\binom{k}{i}(-1)^{k-i}\)

同樣用代入的方法證明,將前一個式子代入后一個。
\(f_i=\sum \limits_{i \leq k}\sum \limits_{k \leq j}f_j\binom{j}{k}\binom{k}{i}(-1)^{k-i}\)
\(=\sum \limits_{i \leq j}f_j \sum \limits_{i \leq k \leq j}\binom{j}{k}\binom{k}{i}(-1)^{k-i}\)
\(=\sum \limits_{i \leq j}f_j \sum \limits_{i \leq k \leq j}\binom{j}{i}\binom{j-i}{k-i}(-1)^{k-i}\)
\(=\sum \limits_{i \leq j}f_j \binom{j}{i} \sum \limits_{k=0}^{j-i}\binom{j-i}{k}(-1)^k\)
\(=\sum \limits_{i \leq j}f_j \binom{j}{i} (1-1)^{j-i}=f_i\)

集合計數

一個有 \(n\) 個元素的集合有 \(2^n\) 個不同子集(包含空集)。

現在要在這 \(2^n\) 個集合中取出至少一個集合,使得它們的交集的元素個數為 \(k\) ,求取法的方案數。

\(1 \leq n \leq 10^6 ,0 \leq k \leq n\)

要求的是交集大小恰好為 \(k\) ,設為 \(f_k\),有一個容易算出的東西是欽定交集大小至少為 \(k\),設為 \(g_k\),有 \(g_k=\binom{n}{k} (2^{2^{n-k}}-1)\)

\(g_k=\sum \limits_{i \geq k} \binom{i}{k}f_i\)

所以可以套用二項式反演的式子得到 \(f_k=\sum \limits_{i \geq k}\binom{i}{k}(-1)^{i-k}g_i\)

七選五

\(f_i\) 表示至少 \(i\) 個元素放在對應位置的方案數,\(g_i\) 表示恰好 \(i\) 個元素放在對應位置的方案數,有 \(f_i = \sum \limits_{j=i}^n g_j \binom{j}{i}, f_i = \binom{k}{i} \binom{n-i}{k-i}(k-i)!\)

反演一下就有 \(g_i = \sum \limits_{j=i}^n f_j \binom{j}{i}(-1)^{j-i}\),這個就是答案了,這道題的 \(n=k,x=0\) 算是經典的錯排問題。


免責聲明!

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



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