「在一棵樹上進行路徑的修改、求極值、求和」乍一看只要線段樹就能輕鬆解決,實際上,僅憑線段樹是不能搞定它的。我們需要用到一種貌似高階的複雜演算法——樹鏈剖分。
樹鏈,就是樹上的路徑。剖分,就是把路徑分類為
重鏈和輕鏈。
記siz[v]表示以v為根的子樹的節點數,dep[v]表示v的深度(根深度為1),top[v]表示v所在的鏈的頂端節點,fa[v]表示v的父親,son[v]表示與v在同一重鏈上的v的兒子節點(姑且稱為
重兒子:siz[u]為v的子節點中siz值最大的,那麼u就是v的重兒子。
輕兒子:v的其它子節點。
重邊:點v與其重兒子的連邊。
輕邊:點v與其輕兒子的連邊。
重鏈:由重邊連成的路徑。
輕鏈:輕邊。
剖分後的樹有如下性質:
性質1:如果(v,u)為輕邊,則siz[u] * 2< siz[v];
性質2:從根到某一點的路徑上輕鏈、重鏈的個數都不大於logn。
樹基礎知識
陣列儲存方式的分析 優點 通過下標方式訪問元素,速度快。對於有序陣列,還可使用二分查詢提高檢索速度。缺點 如果要檢索具體某個值,或者插入值 按一定順序 會整體移動,效率較低 示意圖 畫出操作示意圖 2.鏈式儲存方式的分析 優點 在一定程度上對陣列儲存方式有優化 比如 插入乙個數值節點,只需要將插入節...
區塊鏈 入門 基礎知識
區塊鏈是分布式資料儲存 點對點傳輸 共識機制 加密演算法等計算機技術的 新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任 獲取權益的數學演算法特徵 1,去中心化 2,開放性 3,自治性 4,資訊不可篡改性 5,匿名性定義 由於點對點網路下存在較高的網路延遲,各個節點所觀察到的事務先後...
區塊鏈基礎知識入門
區塊鏈是什麼?一句話概括,它是一種特殊的分布式資料庫。有兩個功能 分布式資料庫不是新產品,但是區塊鏈有個革命性的特點就是去中心化,其他資料庫都有管理員,但是區塊鏈沒有。如果有人想對區塊鏈新增審核,是實現不了,因為它的設計目標就是防止出現居於中心地位的管理當局。因為無法管理,所以區塊鏈無法被控制。區塊...