今天比賽考到了,不會,丟了 100 分。
rk2,380 -> rk15,280
別問為什麼 T4 沒過,因為不會 T2。
方法一 \(O(3^n)\)
令 \(f_S\) 為子集 \(S\) 內定向得到 DAG 的方案。
\(f_S = \sum\limits_{\emptyset \not= T\subset S, \text{T 為獨立集}} (-1)^{|T| - 1}f_{S - T}\)
考慮 DAG 的分解構造過程,可以將其分為出/入度等於 \(0\) 的最大點集,刪除/剝離一層繼續這樣,考慮逆向構造 DAG,但是發現存在重複計數,可以採用容斥,對於非空點集 \(T\),容斥係數為 \((-1)^{|T| - 1}\)。
關於容斥係數:有機會總結一下。關於本題,設 \(T\) 的計算容斥係數為 \(g(T)\),而真實容斥係數為 \(1\),根據計算方式,大的會被每個小的計算一次(有些時候是有關組合數的係數,但這裡根據定義和公式是 \(1\) 次),於是有 \(\forall S, \sum\limits_{T\subset S}g(T) = 1\)
可以構造 \(g(T) = (-1)^{|T| - 1}\)
列舉子集複雜度 \(O(3^n)\)。考慮是不是可以 \(O(3^n)\) 求得容斥係數?
方法二 \(O(n^22^n)\)
貌似子集卷積,記得補
1 LUOGU
2 NFLS