鏈結
splay板子題
結果還調了很久的題,這就是搞文化課的***
顯然維護陣列下標,使得splay的中序遍歷始終為當前數列
值得注意:
旋轉時始終要記得更新節點
注意更新root節點
每次寫都忘.jpg
#includeusingnamespace
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 輸出格式 輸出一...