社区讨论
性感代码,在线求条(45pts)
P4735最大异或和参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lp0zqxap
- 此快照首次捕获于
- 2023/11/16 17:30 2 年前
- 此快照最后确认于
- 2023/11/16 19:27 2 年前
rt,hack数据也行
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=3e5+10,mod=1e9+7,top=30;
inline int read(){
int n=0,c,x=0;
while((c=getchar())<'0'||c>'9') x=c==45;
do (n*=10)+=c-'0';while((c=getchar())>='0'&&c<='9');
return x?-n:n;
}
int write(int n){
if(n<0) putchar('-'),n=-n;
if(n>9) write(n/10);
putchar(n%10+'0');
return n;
}
int n=read(),m=read(),a[maxn],root[maxn],tot;
struct node{int p[3],l;}trie[maxn*60];
int nw(int &x){
if(!x) x=++tot;
else trie[++tot]=trie[x],x=tot;
return x;
}
void insert(int x,int id){
int now=nw(root[id]);
if(id) trie[now]=trie[root[id-1]];
for(int i=top;~i;--i){
trie[now].l=id;
now=nw(trie[now].p[(x>>i)&1]);
}
trie[now].l=id;
}
signed main(){
insert(0,0);
for(int i=1;i<=n;++i) a[i]=a[i-1]^read(),insert(a[i],i);
for(int k=1;k<=m;++k){
string opt;
cin>>opt;
if(opt=="A"){
int x=read();
a[++n]=a[n-1]^x,insert(a[n],n);
}
else{
int l=read()-1,r=read()-1,x=read()^a[n],now=root[r],ans=0;
for(int i=top;~i;--i){
int sub=((x>>i)&1)^1,nxt=trie[now].p[sub];
if(nxt&&l<=trie[nxt].l) now=nxt;
else now=trie[now].p[sub^=1];
ans^=(sub<<i);
}
write(ans^x),puts("");
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...