hdu2665(主席樹模板題)

2022-08-16 10:54:12 字數 793 閱讀 8898

求區間第 k 小。

參考這類題目做法挺多的,例如 劃分樹。

這裡使用主席樹再寫一發,不得不說主席樹相比而言要好寫的多,比起普通線段樹,主席樹就是復用了線段樹共有的資訊。

可持久化資料結構講究的就是復用共有的資訊,可持久化 trie 的思想也是差不多的。

#includeusing namespace std;

#define lson l, m

#define rson m + 1, r

const int maxn = 1e5 + 10;

int l[maxn << 5], r[maxn << 5], sum[maxn << 5];

int tot;

int a[maxn], f[maxn], h[maxn];

int build(int l, int r)

return rt;

}int update(int pre, int l, int r, int x)

return rt;

}int query(int ql, int qr, int l, int r, int k)

int main()

sort(h + 1, h + 1 + n);

int d = unique(h + 1, h + 1 + n) - h - 1;

f[0] = build(1, d);

for(int i = 1; i <= n; i++)

while(m--)

}return 0;

}

hdu2665 主席樹模板題

題目 區間k大值,區間極值很容易想到線段樹,如果k是個位數的話,可以考慮開k個域的線段樹 滾 又稱可持久化線段樹,函式式線段樹 也許是上面兩個字看的太長,同時主席兩字給人一種不明覺厲的感覺,so,嘿嘿嘿 關於主席樹的講解可以看這 先離散化,對每個點i,建乙個1 i的線段樹 大小是數字的個數 記錄該字...

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

題意 給定乙個陣列,每次查詢第l到r區間的第k大值 經過這題總算對可持久化線段樹有了些了解,我們開始先建一顆空樹,然後對於每次修改我們只會修改logn個點,我們可以新建logn個來避免每次都新建一顆線段樹導致的爆空間,對於這題來說我們線段樹中維護的是這個區間的點的個數,插入的時候按權值大小插入,對於...

hdu 2665 劃分樹裸題

昨天還覺得劃分樹很難,看了一眼別人的 覺得好長然後覺得很沒法下手!今天早上起床還是很耐心的研讀了大牛的 哈哈,原來也不過如此嗎!線段樹和歸併排序的結合,建議大家以後遇到不會的題一定要有耐心,不然就真的學不會了 include include include include include inclu...