模板 可持久化線段樹

2021-07-14 21:37:36 字數 892 閱讀 6398

大神講解下終於理解了可持久化和區間第 k大數的關係。。。

終於理解了權值線段樹是什麼。。。

權值線段樹:

例:1 1 2 7 9 11

一串數列,權值線段樹里的  線段

指 有序數列

裡的 一段區間  。。。 

一般統計的是  乙個數

(乙個區間裡的數

)  的出現次數。。。

以一次插入為乙個歷史狀態

。。。

應用線段樹的結構穩定性

(建好後結構不變。。。只有統計值在變。。。)

應用字首和就可解決。。。

例:poj 2104(裸題。。。)

#include#include#include#define maxn 8000001

using namespace std;

int var[maxn];

int ch[maxn][2];

int size[maxn];

int poi=0,pos=0;

int n,m;

int num[maxn];

int rank[maxn];

int half(int x)

void ins(int x,int y,int l,int r,int val)

int mid=(l+r)>>1;

if(val<=mid)

else

size[x]=size[ch[x][0]]+size[ch[x][1]];

}void build(int x,int l,int r)

void pre()

void work()

}void query()

}int main()

模板 可持久化陣列(可持久化線段樹 平衡樹)

update 最後乙個點時間空間已經放大 標題即題意 有了可持久化陣列,便可以實現很多衍生的可持久化功能 例如 可持久化並查集 如題,你需要維護這樣的乙個長度為 n n n 的陣列,支援如下幾種操作 在某個歷史版本上修改某乙個位置上的值 訪問某個歷史版本上的某一位置的值 此外,每進行一次操作 對於操...

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

題目背景 這是個非常經典的主席樹入門題 靜態區間第k小 資料已經過加強,請使用主席樹。同時請注意常數優化 題目描述 如題,給定n個正整數構成的序列,將對於指定的閉區間查詢其區間內的第k小值。輸入輸出格式 輸入格式 第一行包含兩個正整數n m,分別表示序列的長度和查詢的個數。第二行包含n個正整數,表示...

模板 可持久化線段樹 主席樹

這是一道非常直白的可持久化線段樹的練習題,目的並不是虐人,而是指導你入門可持久化資料結構。線段樹有個非常經典的應用是處理rmq問題,即區間最大 最小值詢問問題。現在我們把這個問題可持久化一下 q k l r 查詢數列在第k個版本時,區間 l,r 上的最大值 m k p v 把數列在第k個版本時的第p...