線段樹合併雜題

2022-05-27 11:03:14 字數 874 閱讀 1423

按照 這個題單 做的。

有一些單獨發了題解(前三題濃縮在了我的一篇文章中),在這裡就不說了。

準備填坑。 準備沒事做了再打,因為感覺它們思路簡單卻**長,懶啊……

給每個點創造乙個權值線段樹。點 $o $ 的線段樹代表以 \(o\) 為根的子樹的樹,有哪些值。

假設現在我們在線段樹合併階段,對於乙個點,設它的兩個兒子是 \(o1\) 和 \(o2\) 。 \(o1\) 和 \(o2\) 的線段樹中的點 \(l\sim r\),它的逆序對個數是多少?我們這樣討論:

左子樹的貢獻

右子樹的貢獻

跨過左右子樹的貢獻

對於1和2,我們遞迴求解。對於3,因為是權值線段樹,左邊子樹的值域肯定比右邊子樹的值域小,所以乘起來就是貢獻。即,如果不交換左右子樹,貢獻就是ans1=tre[ o1右兒子 ].val x tre[ o2左兒子 ].val,交換同理,貢獻為ans2=...。合併完後,線段樹合併到它們那和藹可親的父親。ans1和ans2要取個min,加到總答案中。

點 $o $ 的線段樹代表以 \(o\) 為根的子樹中的節點,深度是多少。然後對於點 \(o\) 的詢問,query(dep[o],dep[o]+k),以及fa=o的kth祖先;query(fa,fa[o]+k)。然後記得加上 \(c\) 的貢獻。

同blood cousins,線段樹多記乙個最大值。

注意細節。。。這裡存的是無向邊,blood cousins存的是有向邊,坑殺我也!

值域線段樹?可能要邊合併邊處理……還沒想好。但是回文串的條件是至多只有一種字母是出現奇數次的。

看了題解是 \(2^\) 狀壓

線段樹合併

做永無鄉的時候,以為是主席樹合併,後來感覺不對勁,唔。x和y是兩顆樹的根。這個演算法是從歸併演算法那引申的。實際運作的時候,考慮到了線段樹的本質 線段樹有效節點就是葉子節點。好像是句廢話。其實不是,這句話啟發我們並不需要合併一整棵樹,我們只需要處理好葉子節點,考慮把y樹合併到x上,那麼把y樹的葉子節...

線段樹合併

今天寫dsu on tree 的時候發現不會寫線段樹合併,於是滾來寫線段樹合併部落格 對於值域相同的兩個權值線段樹x xx和y yy 假設把y yy合併到x xx上 每個節點有兩種情況 其中至少有乙個節點沒有權值 x y x y x y 直接x x y x x y x x y x 0?y x x 0...

線段樹合併

某一天馬學長給我看了乙個lca的題目,然而確實是lca 樹上差分,但是僅僅有lca和樹上差分解決不了,然後我就去面向題解程式設計了。可是這個線段樹合併是個什麼東東。然而今天看書,突然看到了這個線段樹合併。就寫一下了。mmh。p4556 vani有約會 雨天的尾巴 題目背景 深繪里一直很討厭雨天。灼熱...