學習筆記 線段樹分治

2022-05-11 04:20:08 字數 365 閱讀 1747

線段樹分治是一種離線分治演算法,主要思想是建立以詢問的時間為葉節點的線段樹,考慮修改對詢問的影響(修改會影響一段時間上的詢問)

用類似標記永久化的思想進行區間修改

(即把原修改影響的區間\([l,r]\)分成最多\(log(r-l+1)\)段,將操作掛在對應的節點上,不上傳也不用下傳)

最後\(dfs\)一遍,每進入乙個節點就把節點上的操作(影響了全域性)做了再往下遞迴,遞迴完成返回時將此節點的所有操作撤回(將全域性改回原來的樣子,類似回溯法)

那麼對於有詢問的葉節點,這個時間點的操作已經做完了(也就是會對這個時間點做貢獻的修改都做了),再詢問並輸出即可

據說這只是一種,還有的我也不會

來兩道例題

線段樹分治學習筆記

參考部落格1 參考部落格2 核心思想 適用範圍 遇到如下問題 例題 p5787 二分圖 模板 線段樹分治 對時間軸建立線段樹。維護區間內存在的邊集,用 vec to rvector vector 進行維護。查詢時從根節點出發開始遍歷,遞迴處理時將當前節點存在的邊進行合併,判斷是否為二分圖。若到達某個...

線段樹分治學習筆記

模板 洛谷p5787 用按秩合併的帶權並查集維護連通塊中點之間邊數的奇偶性來判斷是否存在負環 用棧儲存撤銷操作,複雜度 o nlog 2 include define il inline define ls k 1 define rs k 1 1 define pb push back define...

線段樹分治學習筆記

也許更好的閱讀體驗。模板題p5757 一張 n 個點的圖,有 m 條無向邊會在 l i,r i 時刻存在,求在 1,k 時刻中每個時刻整張圖是否是一張二分圖。1 leq n leq 10 5 1 leq l i leq r i leq k leq 10 5 1 leq m leq 2 times 1...