長鏈剖分是很早以前就聽\(hl666\)神仙說過的演算法,好像在處理與樹上深度有關的問題時非常有用,而且還可以用於優化樹形\(dp\)。
現在為了肝希望而下定決心去學一學。
其概念可以參考樹鏈剖分(重鏈剖分)。
根據重鏈剖分的定義,重節點表示\(size\)最大的子節點。
而我們的長鏈剖分中,長節點表示到葉節點鏈最長的子節點。
其餘部分的定義是與樹剖相類似的,因此沒什麼好講。
我們借助乙個典例,來進一步了解一下長鏈剖分:【洛谷5903】【模板】樹上 k 級祖先。
下面給出一道長鏈剖分優化\(dp\)的例題:【cf1009f】dominant indices。
學習筆記 長鏈剖分
處理和深度有關的一些事情 長鏈剖分的 和重鏈剖分一樣。只是重兒子條件不同罷了。之前和沒學一樣。補充 本質是優化dp,dp一維和深度有關 實現有一些類似dsu on tree 長鏈剖分還有乙個操作精髓是繼承長兒子的資訊 通常用指標分配記憶體,使得長兒子資訊更新位置恰好是x的位置偏移一位 共用部分陣列,...
長鏈剖分學習筆記
學這個之前應該要比較熟悉重鏈剖分,推薦一下這篇部落格。我們模擬重鏈剖分,定義每個點所有兒子中,子樹深度最大的點為它的重兒子,那麼整棵樹就被劃分成了一些不相交的重鏈,然後首先就有乙個性質那就是所有重鏈長度和是 o n 級別的,這個東西很顯然,還有乙個性質就是乙個點的k級祖先所在重鏈長度一定大於等於k,...
長鏈剖分學習筆記
長鏈剖分,也屬於樹鏈剖分的一種方式,但是其與經典的重鏈剖分又不太一樣。在重鏈剖分中,我們評判兒子重或輕的方式是比較其子樹節點數量。在長鏈剖分中,我們以子樹中最深的葉節點深度的大小來比較。其他步驟與重鏈剖分類似,都是兩遍dfs即可解決,都是o n 的複雜度。接下來,我們來看兩個長鏈剖分的經典問題.時間...