6.25 之後的聯考總結

Fun_Strawberry發表於2024-06-26

Trick 總結和其他問題總結另開一篇文章,這裡只是記錄做法。

6.25

\(0+100+0\),rk 倒數。

這場比較好的就是考場上切掉了 T2,但是反而沒有切掉 T1

事實上後面想了一下 T1 大概也會了,好像是人均題……

T1 零個題 (tree)

設樹上共 \(x\) 個葉子,用 \(\frac{x}{2}\) 條路徑將葉子兩兩相連,要求樹上每條邊都被覆蓋過,求路徑長度和的最小值。

多次詢問,每次在原樹上新掛一些葉子節點,總和小於 \(10^5\)

Solution: P6805 [CEOI2020] 春季大掃除

先研究靜態問題,搞出一個合法連線方案,使用 P7320 「PMOI-4」可憐的團主 中 dfs 序 \(i\)\(i+frac{n}{2}\) Trick 即可。

然後發現每條邊如果覆蓋次數 \(\ge3\) 就可以重新安排來 \(-2\)

然後就發現一條邊被覆蓋 \(1~2\) 次,而且 \(2\) 次當且僅當子樹內葉子數量為偶數。

這是好維護的。

好的現在,新掛一個節點,如果掛在葉子上則沒什麼影響,否則則會讓該點到根(注意根是重新選擇的,度數必須 \(>1\))每個點新增一個葉子節點。

變成路徑異或,全域性求和。

樹剖維護 \(O(n\log ^2n)\) 即可,注意每次詢問後還原。

T2 一個題 (ynoi)

維護一個可重集,元素數量 \(\le 2\times 10^5\),元素值域 \([0,2^{30}-1]\)

支援加入,刪除和有引數 \(k\) 詢問:

將可重集劃分為 \(k\) 個非空子集,每個子集權值為內所有元素按位與結果,劃分權值為所有子集權值和,找到最大權值劃分。

Solution:

先考慮 \(k=2\),此時按位貪心顯然對,考慮每一位,如果全 \(0\)\(1\),平凡。

如果有 \(0\)\(1\),這一位貢獻答案,當且僅當所有這一位為 \(0\) 的放在一起。

然後貪心的,它們必須放一起,故直接合併成一個數扔進去並直接加貢獻。

這個過程使用 0-1 Trie 維護子樹按位與結果即可 \(o(n\log^2 n)\) 快速計算。

現在 \(k>2\),發現按位貪心仍然正確,使用調整法可證明。

然後 0-1 Trie 仍然可以維護。

具體的,如果這一位為 \(1\)\(\ge k\) 個仍然可以將全部這一位為 \(0\) 的合併扔進去;如果 \(<k\) 個,一個個單選最優,遞迴求解剩下的問題即可。

然後新維護一下子樹和就行了。

相關文章