給定乙個數n,代表有乙個數列1~n,有下面兩種操作:
cut a b c 把區間[a,b]這一段元素切下來接到新序列第c個元素的後面
flip a b 反轉區間[a,b]
最後遍歷整個序列
#define key_val son[son[root][1]][0]
typedef
long
long ll;
const
int n = 300010, inf = 0x3f3f3f3f, mod = 1000000;
int son[n][2], fat[n], siz[n];
int key[n], val[n], lazy[n];
int root, tot, cnt;
int arr[n];
int n, m;
void new_node(int val, int fa, int &x)
void push_up(int x)
void push_down(int x)
}void rotate(int x, int p)
void splay(int x, int goal)
}push_up(x);
if(goal == 0) root = x;
}int get_prec(int x)
int get_succ(int x)
int get_kth(int k)
return x;
}//int get_kth(int x, int k)
//void build(int l, int r, int fa, int &x)
void cut(int a, int b, int c)
void rev(int a, int b)
void inorder(int x)
void init()
int main()
else rev(a, b);
}cnt = 0;
inorder(root);
}return
0;}
插入x數
刪除x數(若有多個相同的數,因只刪除乙個)
查詢x數的排名(若有多個相同的數,因輸出最小的排名)
查詢排名為x的數
求x的前驅(前驅定義為小於x,且最大的數)
求x的後繼(後繼定義為大於x,且最小的數)
const
int n = 100000 + 10;
int son[n][2], key[n], siz[n], fat[n], mul[n];
int root, tot, prec, succ;
void init()
void new_node(int val, int fa, int &x)
void push_up(int x)
void rotate(int x, int p)
void splay(int x, int goal)
}push_up(x);
if(goal == 0) root = x;
}void insert(int val)
int find(int val)
int get_prec(int x)
int get_succ(int x)
void del(int val)
if(!son[root][0] || !son[root][1])
root = son[root][0] + son[root][1], fat[root] = 0;
else
}int get_kth(int k)
return x;
}//int get_kth(int x, int k)
//int get_rank(int val)
void get_prec(int x, int val)
else get_prec(son[x][0], val);
}void get_succ(int x, int val)
else get_succ(son[x][1], val);
}int main()
else
}return
0;}
伸展樹模板
include include include include define key value ch ch root 1 0 using namespace std const int maxn 200000 10 char op maxn 10 int opx maxn int s maxn e...
uva 11922 (伸展樹模板題)
給你乙個長度為n 的序列 初始值為1到n 有m 次操作,每次操作有l r 你需要將l 到 r 的數字翻轉。然後放到最後 m次操作後輸出答案。includeusing namespace std const int inf 0x3f3f3f3f struct node void maintain vo...
伸展樹 入門
參考部落格 部落格鏈結 網上資料不少,留下自己ac 方便以後回看,用的spt模板是部落格裡的題目鏈結 題意 求最小的營業額波動總和 最小的營業額波動 min x y y是之前某天營業額 解法 插入某個數,找前序以及後序即可 include include include include includ...