文藝平衡樹 Splay

2022-05-06 23:45:17 字數 1205 閱讀 9285

鏈結

splay板子題

結果還調了很久的題,這就是搞文化課的***

顯然維護陣列下標,使得splay的中序遍歷始終為當前數列

值得注意:

旋轉時始終要記得更新節點

注意更新root節點

每次寫都忘.jpg

#includeusing

namespace

std;

const

int maxn = 100000 + 10

;inline

intread()

while(ch<'

0'||ch>'9'

);

dowhile(ch>='

0'&&ch<='9'

);

return f*x;

}struct

splay

inline

void pushup(int

x)

inline

void pushdown(int

x)

inline

void rotate(int

x)

inline

void splay(int x,int

goal)

rotate(x);

}if(!goal) root=x;

}inline

int kth(int

k)

}inline

void insert(int

x)

cur=++idx;

if(f) ch[f][val[f]x;

sz[cur]=1

; ch[cur][

0]=ch[cur][1]=0

; val[cur]=x;fa[cur]=f;

if(!root) root=cur;

splay(cur,0);

}}tree;

intn,m;

inline

void update(int l,int

r)inline

void dfs(int

cur)

intmain()

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

dfs(tree.root);

}

文藝平衡樹Splay

splay是平衡樹 splay 是平衡樹的一種 基本思想是,對於查詢頻率較高的節點,使其處於離根節點相對較近的節點。spaly的基本操作有 struct node tr n 這個旋轉操作跟資料結構裡學的平衡樹旋轉操作是一樣的。如下圖,畫的是右旋 x 的操作,藍色的邊表示資訊發生了改變 void ro...

文藝平衡樹(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 輸出格式 輸出一...