這是和重鏈剖分(dsu on tree,http://www.cnblogs.com/zzqsblog/p/6146916.html)一類的trick,不過它的適用范圍與dsu on tree不同,它適用於涉及到深度的查詢。 例1 k-th ancestor query https ...
之前寫了那么長一篇Blog 現在不如寫篇小短文 說一下另一種樹鏈剖分方法 長鏈剖分的事情。它可以比重鏈剖分更快地完成一些東西。 樹鏈剖分的原始版本重鏈剖分非常經典,這里就不從頭介紹了。 原本的剖分方法是按照子樹大小剖分,與子樹點數最多的兒子連成鏈,所以叫做重鏈剖分 然后顯然就有一個點到根的路徑上至多 O log n 條輕邊這個性質 因為沿着輕邊走,每次子樹大小一定小於父親的一半 。有了這個性質就 ...
2017-02-15 21:40 3 2564 推薦指數:
這是和重鏈剖分(dsu on tree,http://www.cnblogs.com/zzqsblog/p/6146916.html)一類的trick,不過它的適用范圍與dsu on tree不同,它適用於涉及到深度的查詢。 例1 k-th ancestor query https ...
長鏈剖分總結 概念 長鏈剖分和輕重鏈剖分十分相似,都是將一棵樹節點的信息分成多條鏈的信息,但是前者是以深度剖分,后者則是以子樹大小來剖分。 同時長鏈剖分還借鑒了$dsu\;on\;tree$的一些$trick$使得它能十分高效地合並子樹信息。 性質 破天荒地寫了證明 性質 ...
長鏈剖分 長鏈剖分是一種類似\(\mbox{dsu on tree}\)的小\(\mbox{trick}\),可以把維護子樹中只與深度有關的信息做到線性的時間復雜度。 實現方式&復雜度證明 對每個點尋找深度最大的兒子作為重兒子,其余作為輕兒子。由此得到了若干條互不相交的長鏈。 在維護 ...
樹鏈剖分是解決樹上問題的一種常見數據結構,對於樹上路徑修改及路徑信息查詢等問題有着較優的復雜度。樹鏈剖分分為兩種:重鏈剖分和長鏈剖分,因為長鏈剖分不常見,應用也不廣泛,所以通常說的樹鏈剖分指的是重鏈剖分。在這里講解並總結一下樹鏈剖分的實現、優秀性質及應用。 重鏈剖分 先來介紹幾個重鏈剖分 ...
長鏈剖分學習筆記 簡介 長鏈剖分也是一種樹鏈剖分,平時我們說樹鏈剖分,一般都是直接默認為輕重鏈剖分。 輕重鏈剖分的優秀性質在於從任意一個點開始,向上跳躍,跳過的重鏈數量不會超過\(log\)級別。 這樣子可以很優秀的解決兩點之間鏈的問題。 對於解決一些子樹的信息問題,我們可以用\(dsu ...
題面 給定一棵樹,每次詢問一個點的\(k\)次祖先,強制在線。 Vijos 題解 長鏈剖分。 鏈接暫時咕咕咕了。 現在可以戳鏈接看題解了 ...
樹鏈剖分 1. 相關概念 重兒子:父親節點的所有兒子中子樹結點數目最多(size最大)的結點; 輕兒子:父親節點中除了重兒子以外的兒子; 重邊:父親結點和重兒子連成的邊; 輕邊:父親節點和輕兒子連成的邊; 重鏈:由多條重邊連接而成的路徑; 輕鏈 ...
的信息)。 此外,樹剖還可以用來 \(O(\log n)\)(且常數較小)地求 \(LCA\)。在 ...