无旋treap
无旋treap,又名fhq_treap是范浩强巨佬发明的不用旋转维护treap性质的神奇数据结构,比起普通treap,可以解决许多区间操作问题,还可持久化,代码也简单
例一:普通平衡树tyvj1728(treap模板)
如果想看旋转treap怎么写戳这儿
无旋treap代码:
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
struct node{
int val,ch[2],size,rd;
#define l(x) t[x].ch[0]
#define r(x) t[x].ch[1]
}t[N];
struct treap{
int root,x,y,z,cnt;
inline void up(int x){
t[x].size=1+t[l(x)].size+t[r(x)].size;
}
inline int new_node(int x){
t[++cnt].size=1;
t[cnt].val=x;
t[cnt].rd=rand();
return cnt;
}
void split(int now,int k,int &x,int &y){
if(!now)x=y=0;
else{
if(t[now].val<=k)x=now,split(r(now),k,r(now),y);
else y=now,split(l(now),k,x,l(now));
up(now);
}
}
int merge(int A