P3369 【模板】普通平衡树
题目链接: 参考于AgOH大佬的递归版splay做法!!! #include <bits/stdc++.h> using namespace std; #define ll long long #define re register const int N=1e6+10; void read(int &a) { a=0;int d=1;char ch; while(ch=getchar(),ch>'9'||ch<'0') if(ch=='-') d=-1; a=ch^48; while(ch=getchar(),ch>='0'&&ch<='9') a=(a<<3)+(a<<1)+(ch^48); a*=d; } struct note{int l,r,siz,cnt,val;}spl[N]; int rt,cnt; void newnode(int &now,int val) { spl[now=++cnt].val=val; spl[now].siz=1; spl[now].cnt=1; } void update(int now){spl[now].siz=spl[spl[now].l].siz+spl[spl[now].r].siz+spl[now].cnt;} void zig(int &now) { int l=spl[now].l; spl[now].l=spl[l]