\(~\)
以前做過的 [haoi2018]染色、[haoi2018]蘋果樹暫時不更
[haoi2018]字串覆蓋 已經棄療了。
總體難度 medium 偏 easy,但是 luogu4495 [haoi2018]奇怪的揹包 想不到是真的腦抽。
**可以在 找到。
小 \(c\) 和小 \(g\) 經常在一起研究搏弈論問題,有一天他們想到了這樣乙個遊戲。有乙個 \(n\) 個點 \(m\) 條邊的無向圖,初始時每個節點有乙個顏色,要麼是黑色,要麼是白色。現在他們對於每條邊做出一次抉擇:要麼將這條邊連線的兩個節點都反色,要麼不作處理.他們想把所有節點都變為白色,他們想知道在 \(2^m\) 種決策中,有多少種方案能達成這個目標。
小 \(g\) 認為這個問題太水了,於是他還想知道,對於第 \(i\) 個點,在刪去這個點及與它相連的邊後,新的答案是多少,對 \(10^9+7\) 取模。
\(n \le 10^5\)
70 pts :\(n \le 2000\)
圖論
生成樹
感覺挺簡單的,不理解為什麼在洛谷評了黑。
看到 xor,首先想到的是高斯消元求解方程組然後bitset
優化,然後答案就是 \(2^\),複雜度 \(\mathcal o(\frac)\)(可能算錯了,但是能有 \(50\) 分)。
但是這個解法真的沒什麼用處……
但是通過這個解法以及觀察樣例,我們可以得知答案就是 \(2^t\) 的形式,進一步地,我們可以想到這個題和線性基有點類似,我們可以先插入一堆邊,然後如果有一條邊可以被別的邊表示出來,那麼就可以將答案 \(\times 2\)。
上面只是乙個比較抽象的想法,但是可以讓我們聯想到環、生成樹,於是我們可以將解法具體化:
於是在生成樹上求解,然後根據根的點的顏色可以判斷是否有解。
然後就是 \(\mathcal o(n^2)\) 解法了。
考慮 \(\mathcal o(n)\) 做法:
然後就可以求解了。
另外要注意初始的圖不連通。
小 c 非常擅長揹包問題,他有乙個奇怪的揹包,這個揹包有乙個引數 \(p\) ,當他向這個揹包內放入若干個物品後,揹包的重量是物品總體積對 \(p\) 取模後的結果。現在小 c 有 \(n\) 種體積不同的物品,第 \(i\) 種占用體積為 \(v_i\) ,每種物品都有無限個。他會進行 \(q\) 次詢問,每次詢問給出重量 \(w_i\) ,你需要回答有多少種放入物品的方案,能將乙個初始為空的揹包的重量變為 \(w_i\)。注意,兩種方案被認為是不同的,當且僅當放入物品的種類不同,而與每種物品放入的個數無關.不難發現總的方案數為 \(2^n\)。
由於答案可能很大,你只需要輸出答案對 \(10^9 + 7\) 取模的結果。
動態規劃
數論
沒有想到結論,有不敢猜結論直接自閉了,其實以前是見過的,但是不知道為什麼想不起來。
結論: \(w\) 能被 \(v_1, v_2, \dots, v_k\) 表示出來當且僅當 \(\gcd(p,v_1, v_2, \dots, v_k) | w\)。
然後我們可以設 \(f(x)\) 表示 \(\gcd\) 為 \(x\) 的集合的個數,複雜度 \(\mathcal o(n d(p))\),其中 \(d(p) \le 1344\)。
然後可以將 \(\gcd(v, p)\) 的相同的元素合併,於是複雜度就是 \(o \mathcal (d(p)^2\log p)\) 了(還有 \(\gcd\) 複雜度)。
題解 HAOI2018 反色遊戲
題目傳送門 給出乙個 n 個點 m 條無向邊的圖,每個點都有乙個 in 0,1 的權值,每次可以選擇一條邊,然後將該邊相連兩點權值異或上 1 問有多少種選擇方法使得每個點的權值都變為 0 每條邊只能選擇一次 但是這個問題太簡單了,所以你要求刪掉每個點以及它連出的邊之後的答案。有 t 組資料,t le...
HAOI2018 反色遊戲
小c和小g經常在一起研究搏弈論問題,有一天他們想到了這樣乙個遊戲 有乙個 n nn 個點 m mm 條邊的無向圖,初始時每個節點有乙個顏色,要麼是黑色,要麼是白色 現在他們對於每條邊做出一次抉擇 要麼將這條邊連線的兩個節點都反色 黑變白,白變黑 要麼不作處理 他們想把所有節點都變為白色,他們想知道在...
HAOI 2018 染色(容斥 NTT)
設 f k 為強制選擇 k 個顏色出現 s 種,其餘任取的方案數。則有 f k m k 不難看出,這個方案可能包括了超過 k 種顏色,也有重複的方案,所以恰有 k 個顏色出現 s 種的方案 ans k 滿足 ans k sum 1 f i 最終化簡得到 ans k sum i f i cdot ov...