蒟蒻求助

P5055 【模板】可持久化文艺平衡树

```cpp inline int upper(int &root,int val){//求val的前缀 int x,y,ans; splitForVal(root,val-1,x,y); ans=tr[atRank(x,tr[x].size)].val; root=merge(x,y); return ans; } inline int lower(int &root,int val){//求val的后缀 int x,y,ans; splitForVal(root,val,x,y); ans=tr[atRank(y,1)].val; root=merge(x,y); return ans; } inline LL query(int &root,int l,int r){//区间求和 int x,y,z,ans; splitForRank(root,r,x,z); splitForRank(x,l-1,x,y); ans=tr[y].sum; root=merge(merge(x,y),z); return ans; } int main(void){ //srand(23333);//23333 srand((unsigned)time(NULL));//正经点为好2333 int m=read(); for(re int i=1;i<=m;++i){//唯一的循环,给你加个register好了2333 int v=read(),oper=read(); rt[i]=rt[v]; if(oper==1){ int p=read()^lastAns,val=read()^lastAns; insertForRank(rt[i],p,val); } else if(oper==2){ int p=read()^lastAns; delForRank(rt[i],p); } else if(oper==3){ int l=read()^lastAns,r=read()^lastAns; if(l>r) swap(l,r); rev(rt[i],l,r); } else if(oper==4){ int l=read()^lastAns,r=read()^lastAns; if(l>r) swap(l,r); lastAns=query(rt[i],l,r); printf("%lld\n",lastAns); } } return 0; } ```
by Stay_Foolish @ 2019-03-30 01:29:16


太长了不让发。。
by Stay_Foolish @ 2019-03-30 01:29:38


不要在意蒟蒻的神奇注释(逃
by Stay_Foolish @ 2019-03-30 01:30:52


够仙
by 小粉兔 @ 2019-03-30 01:37:02


orz神仙
by SSerxhs @ 2019-03-30 01:39:47


|