52分或者直接交板子的xdm看过来(警示后人
查看原帖
52分或者直接交板子的xdm看过来(警示后人
586455
liyiHuan楼主2022/10/12 10:07

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;
}
2022/10/12 10:07
加载中...