Treap學習筆記

2021-08-07 16:21:33 字數 760 閱讀 2260

開乙個坑,學一學treap專題

mark乙個習題集:

帶旋轉treap模板:

struct treap

tr[100005];

int n,size,root,ans;

void update(int k)//更新結點資訊

//旋轉

void rturn(int &k)

void lturn(int &k)

void insert(int &k,int x)//插入x

tr[k].size++;

if(tr[k].v==x)

tr[k].w++;//每個結點順便記錄下與該節點相同值的數的個數

else if(x>tr[k].v)

if(tr[k].l*tr[k].r==0)

k=tr[k].l+tr[k].r;//有乙個兒子為空

else if(tr[tr[k].l].rndtr[k].v)

tr[k].size--,del(tr[k].r,x);

else

tr[k].size--,del(tr[k].l,x);

} int query_rank(int k,int x)//x的排名

int query_num(int k,int x)//排名為x的數

void query_pro(int k,int x)//前驅

else

query_sub(tr[k].r,x);

}};

學習筆記 Treap

學習treap之前先學的splay,然後發現treap真是太簡單了,greatwall1995神犇的意見要聽啊 bst的缺陷是因為人為搞單調資料才爆的,隨機資料還是logn的時間,treap的思想也基於此,給每個新增的點賦乙個隨機優先值,然後整個樹關於優先值是乙個堆。clrs上要求讀者證明插入節點後...

Treap 學習筆記

tre ap treap trea p,顧名思義,就是tre e he ap tree heap tree h eap,是一種常見的平衡樹。b st bstbs t性質給定一棵二叉樹,樹上的每個節點帶有乙個權值。對於樹上的任意乙個節點,滿足 滿足這兩條性質的二叉樹就是 二叉查詢樹 bst bstbs...

Treap 學習筆記

平衡樹就是一種可以在log的時間複雜度內完成資料的插入,刪除,查詢第k大,查詢排名,查詢前驅後繼以及其他許多操作的資料結構。treap是一種比較好寫,常數比較小,可以實現平衡樹基本操作的一種平衡樹。treap的平衡是基於隨機化。是將堆與二叉查詢樹結合起來所得到的資料結構。treap在插入數時,給每個...