样例都过了的,基本上和第一篇题解一样。求助大佬
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
struct seg{
#define rep for(int i=31;~i;--i)
int a[32];
int ask(){
int res=0;
rep if((a[i]^res)>res) res^=a[i];
return res;
}
friend seg operator-(seg a,int x){
rep if(x>>i&1){
if(a.a[i]) x^=a.a[i];
else{a.a[i]=x;return a;}
}
}
} p[N<<3];
seg operator+(seg a,seg b){
rep if(b.a[i]) a=a-b.a[i];
return a;
}
#define TREE int h,int l,int r,int x,int y
#define ls h<<1
#define rs ls|1
#define mid (l+r>>1)
#define Lson ls,l,mid,x,y
#define Rson rs,mid+1,r,x,y
void modify(TREE){
p[h]=p[h]-y; if(l==r) return;
if(x<=mid) modify(Lson);
else modify(Rson);
}
seg query(TREE){
if(x<=l&&r<=y) return p[h];
if(y<=mid) return query(Lson);
if(x>mid) return query(Rson);
return query(Lson)+query(Rson);
}
main(){
cin.tie(0)->sync_with_stdio(0);
int n,m; cin>>n>>m;
for(int u,v,w;n--;){
cin>>u>>v>>w;
if(u==1) modify(1,1,m,v,w);
else cout<<query(1,1,m,v,w).ask()<<'\n';
}
}