poj2104 主席樹區間第k大

2021-07-26 18:43:29 字數 607 閱讀 3280

主席樹裸題,過了好久都快忘了。

主席樹主要就是使多個線段樹並行於一顆樹中,儲存的是一段區間內數字出現的個數,所以先離散化。

數字的更改只影響了一條從這個葉子節點到根的路徑,所以只有這條路徑是新的,其他的都沒有改變。比如對於某個節點,要往右邊走,那麼左邊那些就不用新建,只要用個指標鏈到原樹的此節點左邊就可以了

見**

#include

#include

#include

#include

using namespace std;

const int maxn=100100;

struct node

t[maxn*40];

int n,m,cnt,root[maxn],x,y,k;

int a[maxn],b[maxn],p[maxn];

bool cmp(const int &i,const int &j)

int query(int l,int r,int

x,int

y,int k)

int main()

return

0;}

poj 2104 主席樹 靜態區間第k大

主席樹入門題目,主席樹其實就是可持久化權值線段樹,rt i 維護了前i個數中第i大 小 的數出現次數的資訊,通過查詢兩棵樹的差即可得到第k大 小 元素。include include include using namespace std define lson i node i lson defi...

區間第K大(POJ 2104)

可持久化線段樹不是一顆完全二叉樹,所以不能用層次序編號,而應該直接記錄每個節點的左 右子節點的編號。可持久化線段樹維護了每次操作後線段樹的歷史形態。下面舉個簡單的例子來理解一下 以poj 2104為例 這棵樹是一顆不用修改的線段樹 題意 即多次查詢,查詢區間第k大的數。主席樹的學習 區間第k大 區間...

POJ 2104 區間第k大 主席樹(模板)

查詢區間範圍內,第 k kk 大的數 按照數列順序依次加入,構建可持久化線段樹 主席樹 由於線段樹的可減性,能夠得到對應區間範圍內的線段樹 主席樹的模板題了 int cnt,root maxn a maxn struct nodet maxn 40 vector int v intgetid int...