【Cf Edu #47 F】Dominant Indices(长链剖分)
生活随笔
收集整理的這篇文章主要介紹了
【Cf Edu #47 F】Dominant Indices(长链剖分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求每個點子樹中節點最多的層數,一個通常的思路是樹上啟發式合并,對于每一個點,保留它的重兒子的貢獻,暴力掃輕兒子將他們的貢獻合并到重兒子里來。
參考重鏈剖分,由于一個點向上最多只有$log$條輕邊,故每個點最多被合并$log$次。但這不是這題想說的。
由于我們只保留以深度為下標的信息,重鏈剖分就會多算,以此引出長鏈剖分,權且作為一個模板來學習。
長鏈剖分時,每個點以最深的兒子作為長兒子,其余為短兒子。
每個點$O(1)$繼承長兒子的信息,將短兒子的信息合并上來。每個點只有作為短兒子時才保留以它為鏈頭的一條長鏈上的信息,空間復雜度為$O(鏈長)$。
顯然,每次短兒子被合并之后就不會再被訪問到了,因為它合并到了一條比它更長的鏈,而所有的長鏈都不相交,每條鏈都以$O(鏈長)$被合并掉,故總復雜度是$O(n)$的。
這道題只要維護深度為$i$的節點的數量,取最大值即可。
?
$\bigodot$技巧&套路:
- 以深度為下標的信息,可以考慮長鏈剖分。
- 通常信息的合并,DSU on tree就可以了。
?
轉載于:https://www.cnblogs.com/Dance-Of-Faith/p/9322458.html
總結
以上是生活随笔為你收集整理的【Cf Edu #47 F】Dominant Indices(长链剖分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何正确清洁地毯以去除污渍?
- 下一篇: 问一下高端实木定制地板厂家哪家好?实力怎