奇妙的倍增法

2021-09-23 16:58:11 字數 330 閱讀 5745

寫這篇部落格是因為做某一題的時候用到了倍增法,發現了倍增法的強大之處。

意思不麻煩,2e4個點有點權,組成一棵樹,2e5個詢問,問u到v路徑上的點組成的線性基可獲得的

最大元素是什麼。

我用倍增法做得,後來想想樹鏈剖分+線段樹應該也可以

談到倍增法的好處,就是它:記錄(建樹)是onlogn的,查詢也是onlogn的

並且還可以方便地記錄樹上的長段資訊

這樣貌似很多問題都可以用倍增法解決了,比如這次的線性基

再比如要查詢任意路徑長度?(這不也是樹鏈剖分的基本操作嘛)

不過好像倍增法不容易修改,貌似倍增法=樹狀陣列  樹鏈剖分=線段樹

LCA倍增法模板

deg其實應該寫成depth吧,存的是每個結點的深度,dfs的過程是為了處理出每個結點的深度,用遞推式計算出fa u i 其中f u i 表示u的第2 i個祖先 基本思想是 d i 表示 i節點的深度,p i,j 表示 i 的 2 j 倍祖先 那麼就有乙個遞推式子 p i,j p p i,j 1 j...

字尾陣列倍增法

字尾陣列 字尾陣列是處理字串的有力工具。字尾陣列是字尾樹的乙個非常精巧的替代品,它比字尾樹容易程式設計實現,能夠實現字尾樹的很多功能而時間複雜度也並不遜色,而且它比字尾樹所占用的記憶體空間小很多。可以說,在資訊學競賽中字尾陣列比字尾樹要更為實用。1.1 基本定義 子串 字串s的子串r i.j i j...

倍增法求 LCA

預處理 通過dfs遍歷,記錄每個節點到根節點的距離dist u 深度d u 並求出樹上每個節點i的2 j祖先f i j 求最近公共祖先,根據兩個節點的的深度,如不同,向上調整深度大的節點,使得兩個節點在同一層上,如果正好是祖先結束,否則,將連個節點同時上移,查詢最近公共祖先。include incl...