liyiHuan @ 2022-10-12 10:07:33
1、不管什么操作,输入都要异或上上一次结果
2、如果宁是直接搬运Treap板子,询问排名的时候需要 先插入后删除,因为可以不存在,并且插入删除你只能放在opt==3里面
所以你应该是
signed main()
{
cin.tie(0) -> sync_with_stdio(0);
build();
int n,m,lst=0,ans=0;
cin>>n>>m;
int opt, x;
for (int i=0;i<n;i++)
{
cin >> x;
insert(root,x);
}
x = 0;
while (m -- )
{
cin >> opt >> x;
x^=lst;
if (opt==1) insert(root,x);
else if (opt==2) remove(root,x);
else
{
if (opt==3)
{
insert(root, x);
lst=get_rank_by_key(root,x)-1;
remove(root, x);
}
else if (opt==4) lst=get_key_by_rank(root,x+1);
else if (opt==5) lst=get_prev(root,x);
else if (opt==6) lst=get_next(root,x);
ans ^= lst;
}
}
cout<<ans;
return 0;
}
by H2O_TX @ 2022-11-03 19:06:55
谢谢大佬%%%
我就是这里错了
by _lyx111 @ 2022-12-28 16:37:40
谢谢大佬 %%%
我就是这里错了