大神講解下終於理解了可持久化和區間第 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...