線段樹,可持久化線段樹,主席樹

2021-08-30 23:32:18 字數 407 閱讀 8317

線段樹板子題:

另乙個板子:

線段樹就是對於給定的乙個序列,我們按照不斷取中點的方式建立一顆二叉樹,該樹的每個節點都代表乙個區間,也就是序列的下標,這樣我們就可以借助這些下標來維護某些我們需要的值,例如:某個區間的最大值,某個區間的和等等。同理也可以像差分那樣對某個區間進行操作。

可持久化線段樹板子:

主席樹板子:

主席樹就是在可持久化線段樹的基礎上增加了權值線段樹,什麼是權值線段樹呢?原來的線段樹我們只是維護的序列的下標,而在權值線段樹中,我們每個節點維護的某個區間的值,主席樹最大的用處就是可以查詢區間第k大或者小的值,具體的可以看下部落格推薦中的兩邊博文。另外,對於主席樹,由於維護的是權值(常常比較大),所以我們一般都會採用離散化的方法來處理原陣列。

對於上面三種樹,還有不清楚的地方可以到模板中看下**。

主席樹(可持久化線段樹)

我真弱。連主席樹都不會。主席樹相當於多個線段樹,由於相鄰兩棵線段樹的節點的值只有少許不同,因此可以對於和前一棵樹一樣的子樹乙個指標指過去,無需操作,這樣每棵樹o logn 總複雜度o nlogn 以下是區間k大 include include include define n 100005 defi...

主席樹 可持久化線段樹

首先要學會普通的線段樹,然後理解權值線段樹,而主席樹就是多個權值線段樹 我自己的理解 但是這多個權值線段樹之間有公共部分,節約了空間。它一開始是乙個空樹,後來逐個添數,記錄新增的這個數在那個範圍內,並 1,顯然它每次只更新了一條鏈,其他不需要變,這樣就有了多個版本的線段樹。如果求 l,r 範圍內第k...

可持久化線段樹(主席樹)

qwq我大概又是機房最後乙個學主席樹的了吧 其實之前一直都在講 只是沒做題 做了幾道以後發現都是乙個套路qwq關鍵就是能不能看出來要用主席樹 主要可以解決 靜態 動態區間第k大 樹上也可以 一些有關區間的帶某些限制的詢問 如出現次數等 先把模板粘上來 include include include ...