hdu 2665 劃分樹裸題

2021-06-18 17:55:53 字數 753 閱讀 3349

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

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define rep(i,n) for(int i=0; i=(m); --i)

#define ll long long

#define arc(a) ((a)*(a))

#define inf 100000

#define exp 0.000001

#define n 100005

#define m 20

int a[n];

int aleft[m][n];

int tree[m][n];

int n,m;

void bulidtree(int l,int r,int dep)

int mid=(l+r)/2;

int lsame=l-1;

int x=a[mid];

repf(i,l,r) if(tree[dep][i]=k)

else }

int main()

} return 0;

}

hdu2665(主席樹模板題)

求區間第 k 小。參考這類題目做法挺多的,例如 劃分樹。這裡使用主席樹再寫一發,不得不說主席樹相比而言要好寫的多,比起普通線段樹,主席樹就是復用了線段樹共有的資訊。可持久化資料結構講究的就是復用共有的資訊,可持久化 trie 的思想也是差不多的。includeusing namespace std ...

hdu2665 主席樹模板題

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

hdu2665 可持續化線段樹

a的第一道可持續化線段樹。我是看這個看懂的 可持續化線段樹,主要思想就是利用歷史資訊,減少時間和記憶體花銷。比方有兩棵線段樹,但是他們只有乙個節點資訊不同。仔細一想,在這兩顆線段樹上,對應的 l,r 節點 只有log n 個節點不同。那麼,除了不同的節點,其他節點資訊,他們完全可以共用。關於這題解法...