主席樹入門

2022-06-27 05:42:09 字數 478 閱讀 6605

推薦部落格 :

: 早在很久之前就聽過主席樹這個名詞,不過一直沒有去學,當時想的是先把線段樹學明白了,今天想學這個是因為一場 cf。

主席樹其實就是由 n 棵權值線段樹組成,並且你要保留著 i 棵線段樹的根節點,這 i 棵線段樹其實就可以看成是不同的歷史的版本,現在如果想讓我們查詢某一段區間時,我們直接做差就可以求,其實對於每乙個根節點我們都可以看成是一棵線段樹,與線段樹的操作是一樣的。

主席樹的結構體:

struct node

t[maxn*20];

l , r 表示當前節點的左右兒子的編號,其不滿足線段樹的結點編號關係,sum 表示當前結點內有多少個點值。

另外,區別於線段樹的一點就是它需要開闢的結點是 20 倍,區別於線段樹,為什麼呢?因為每次建樹的時候都是新增一條鏈,那麼你需要新開的結點就是 logn 個結點,所以總的結點數就是 maxn*logn .

還有一點就是主席樹在建樹前要離散化。

主席樹 入門

思想類似字首和,訪問某狀態的線段樹可通過末減初狀態進行求解。hdu4417 第二道模板題 有很多細節需要注意。1.題目給定ai的高度可能為0,但通過離散化事實上不影響結論。2.給定的訪問區間 x,y 以及高度h也可能為零,因而x,y需對應 查詢依舊是root y root x 1 3.對於高度h,為...

主席樹入門題

全稱是可持久化權值線段樹 以前一直分不清可持久化線段樹和主席樹的區別 但實際上寫法跟可持久化trie沒什麼區別,維護權值就ok了 那就不講了 description jz擁有乙個很大的野生動物園。這個動物園坐落在乙個狹長的山谷內,這個區域從南到北被劃分成n個區域,每個區域都飼養著一頭獅子。這些獅子從...

主席樹入門 部落格推薦

poj 2104 k th number,我也寫了關於這個題的部落格,有注釋,可以方便理解。include include include includeusing namespace std const int maxn 1e5 7 int root maxn a maxn x,y,k int n...