總原理: 將[1,n]分解成若干特定的子區間(數量不超過4*n) 用線段樹對“編號連續”的一些點,進行修改或者統計操作,修改和統計的復雜度都是O(log2(n)) 用線段樹統計的東西,必須符合區間加法,(也就是說,如果已知左右兩子樹的全部信息,比如要能夠推出父節點);否則,不可能通過分 ...
線段樹是算法競賽中常用的用來維護 區間信息 的數據結構。 相關閱讀:樹狀數組 線段樹可以在 O log N 的時間復雜度內實現單點修改 區間修改 區間查詢 區間求和,求區間最大值,求區間最小值 等操作。 線段樹維護的信息,需要滿足可加性,即能以可以接受的速度合並信息和修改信息,包括在使用懶惰標記時,標記也要滿足可加性 例如取模就不滿足可加性,對 取模然后對 取模,兩個操作就不能合並在一起做 。 線 ...
2020-07-31 20:03 3 659 推薦指數:
總原理: 將[1,n]分解成若干特定的子區間(數量不超過4*n) 用線段樹對“編號連續”的一些點,進行修改或者統計操作,修改和統計的復雜度都是O(log2(n)) 用線段樹統計的東西,必須符合區間加法,(也就是說,如果已知左右兩子樹的全部信息,比如要能夠推出父節點);否則,不可能通過分 ...
從頭到尾徹底理解KMP 作者:July 時間:最初寫於2011年12月,2014年7月21日晚10點 全部刪除重寫成此文,隨后的半個多月不斷反復改進 ...
這一篇講線段樹優化建圖。 發現網上關於線段樹優化建圖的博客很少而且講的不是很詳細,很多人會看得比較懵。 於是原本這一篇打算講樹鏈剖分的就改成講優化建圖了。 前置知識:動態開點線段樹 看到標題你可能會感覺奇怪,線段樹和建圖有什么關系? 事實上,線段樹優化建圖就是利用兩棵線段樹,減少連邊數量 ...
目錄 為什么要使用線段樹? 什么是線段樹? 創建一棵線段樹 線段樹的查詢操作 線段樹的更新操作 為什么要使用線段樹? 最經典的線段樹問題:區間染色 有一面牆 ,長度為n,每次選擇一段兒牆進行染色,m次操作后 ...
此篇文章轉載自劉毅學長,部分內容按博主理解進行修改 一:背景 給定一個主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出現的位置,此即串的模式匹配問題。 Knuth-Morris-Pratt 算法(簡稱 KMP)是解決這一問題的常用算法之一,這個算法是由高德納 ...
線段樹優化建圖 在有些數據范圍內是不允許我們把圖上的所有邊建出來的 然后我們對編號為下標建線段樹 線段樹上的每個節點的 \(l\) 和 \(r\) 就是把 \(l\rightarrow r\) 中的所有點縮到一個點表示了 然后這里我們完善一下: 把每個點拆一下,成一個入點,一個出點,分別 ...
一個點向一個點連邊太easy了。 現實有的時候並沒有這么簡單。 對於這樣的一類問題:需要多次(m=1e5次左右)從一個編號在[L1,R1]的區間內的所有點,向另一個編號在[L2,R2]的所有點之間分別連權值相同的邊。 求S到T的最短路,或者其他的信息。 就是一個建圖的輔助工具。解題 ...
值域線段樹每一個節點代表一個值,其他沒什么區別 動態開樹就是節省了沒有用到節點,其中重要一點的是不需要節點是連續的(即id值是任意的,只要可以找到即可) 例題 Bzoj 4627 回轉壽司 題意 給n個數問區間和在L<=sum【r】-sum【l-1】<=R區間 ...