平衡樹 Splay 模板

2021-08-29 20:38:05 字數 1809 閱讀 2950

又是 機房最後乙個學spl

ay

splay

splay的人

參考d al

ao

dalao

dalao部落格

寫的非常好!

最後放上我的**:

(有個地方應該寫ch[

root

][0]

ch[root][0]

ch[roo

t][0

]手殘寫成ch[

root

][1]

ch[root][1]

ch[roo

t][1

]還查不出來t

tt成狗

#include

#include

#include

#include

#include

#define n 1000001

using

namespace std;

int n,ch[n][2

],f[n]

,siz[n]

,cnt[n]

,key[n]

,sz,root;

inline

intrd()

inline

void

clear

(int x)

inline

intget

(int x)

//找到x和f[x]的關係

inline

void

update

(int x)

}inline

void

rotate

(int x)

inline

void

splay

(int x)

inline

void

insert

(int x)

int now=root,fa=0;

while(1

) fa=now;

now=ch[now]

[key[now]

(now==0)

}}inline

intfind

(int x)

ans+

=cnt[now]

; now=ch[now][1

];}}

}inline

intfindx

(int x)}}

inline

intpre()

inline

intnxt()

inline

void

del(

int x)if(

!ch[root][0

]&&!ch[root][1

])//無兒子if(

!ch[root][0

])elseif(

!ch[root][1

])int lf=

pre(

),oldroot=root;

//兩個兒子

splay

(lf)

; ch[root][1

]=ch[oldroot][1

]; f[ch[oldroot][1

]]=root;

clear

(oldroot)

;update

(root)

;return;}

intmain()

if(opt==6)

}return0;

}

(模板)Splay 平衡樹

不會講解,直接上板子,按照洛谷p3369的要求 include include include using namespace std const int maxn 1000000 int ch maxn 2 f maxn size maxn cnt maxn key maxn int nodecn...

文藝平衡樹(splay模板)

題幹 splay模板,要求維護區間反轉。splay是一種碼量小於treap,但支援排名,前驅後繼等treap可求的東西,也支援區間反轉的平衡樹。但是有兩個壞處 1.splay常數遠遠大於treap以及stl中的set。2.沒有可持久化splay,但有可持久化treap。下面是 1.pushup以及p...

模板 文藝平衡樹(Splay)

這是一道經典的splay模板題 文藝平衡樹。輸入格式 第一行為n,m n表示初始序列有n個數,這個序列依次是 1,2,cdots n 1,n 1,2,n 1,n m表示翻轉操作次數 接下來m行每行兩個數 l,r l,r 資料保證 1 leq l leq r leq n1 l r n 輸出格式 輸出一...