【省選模擬】詳細題解
阿新 • • 發佈:2022-03-31
3.25 黑白樹
操作 \(4,5\) 可以用樹剖 + 線段樹 \(O(n\log^{2}n)\) 輕鬆維護,但這導致不能套用 QTree7 的做法(不過可以借鑑使用兩個 DS 分別維護黑白點的套路)
稱一個點的管轄點為該點連通塊中最淺的點,可以使用樹剖 + set
求出(注意跳輕邊後特判),讓同色連通塊相關操作都基於管轄點進行。記 \(cnt\) 為一個點根鏈上異色點個數,那麼某點處於連通塊中等價於在管轄點子樹且 \(cnt\) 相等。對於線段樹上的區間,令其 \(cnt\) 等於該區間內點的 LCA 的 \(cnt\)(子樹加維護 \(cnt\) 時求出的恰好就是這個)
對於連通塊操作,先定位到管轄點子樹的 \(\log\)
程式碼有點小長,但不過是若干 trivial 操作的累加,並不難調