模板 文藝平衡樹(Splay)

2022-05-29 05:42:10 字數 1009 閱讀 8738

這是一道經典的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

輸出格式:

輸出一行n個數字,表示原始序列經過m次變換後的結果

#include using

namespace

std;

const

int maxn = 100000+5

;const

int inf = 2000000008

;int root,tot,ch[maxn][2

],lazy[maxn],fa[maxn],siz[maxn];

intn,m;

struct

splay

void up(int

t)

void down(int

t)

void

init()

int find( int x, int t =root)

void rotate(int x, int

d) ch[x][d] = y;fa[y] =x;

up(y),up(x);

}void splay(int x, int

targrt)

else

}if(!targrt)root =x;

}int build(int f, int l, int

r)

void rev(int l, int

r)}tr;

intmain()

for(int i = 1; i <= n; i++)printf("

%d ",tr.find(i+1)-1

);

return0;

}

文藝平衡樹(splay模板)

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

文藝平衡樹 Splay

鏈結 splay板子題 結果還調了很久的題,這就是搞文化課的 顯然維護陣列下標,使得splay的中序遍歷始終為當前數列 值得注意 旋轉時始終要記得更新節點 注意更新root節點 每次寫都忘.jpg includeusing namespace std const int maxn 100000 10...

文藝平衡樹Splay

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