社区讨论
萌新刚学OI,一直80分
P4735最大异或和参与者 7已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mi7x77sa
- 此快照首次捕获于
- 2025/11/21 05:05 4 个月前
- 此快照最后确认于
- 2025/11/21 05:05 4 个月前
CPP
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
int n,m;
const int maxn=600005;
int ch[maxn<<5][2],cnt[maxn<<5];int din=1;
void ins(int&pos,int x,int i=26){
din++;
rep(j,0,1)ch[din][j]=ch[pos][j];
cnt[din]=cnt[pos];
pos=din;
cnt[pos]++;
if(i<0)return;
int fx=(x>>i)&1;
ins(ch[pos][fx],x,i-1);
}
int vv[maxn];int din2=0;
int rec[maxn];
int maxyh(int x,int y,int ta,int i=26){
if(i<0)return 0;
//cout<<"$"<<x<<" "<<y<<" "<<ta<<" "<<i<<endl;
rep(j,0,1){
int fx=((ta>>i)&1)^j^1;
if(cnt[ch[y][fx]]>cnt[ch[x][fx]]){
return maxyh(ch[x][fx],ch[y][fx],ta,i-1)|((j^1)<<i);
}
}
return 0;}
void pr(){
return;
cout<<endl<<endl;
cout<<"digraph{";
rep(i,1,din)cout<<i<<"[label=\""<<i<<" "<<cnt[i]<<"\"];";
rep(i,1,din)rep(j,0,1)if(ch[i][j])
cout<<i<<"->"<<ch[i][j]<<"[label=\""<<j<<"\"];";
cout<<"}";
cout<<endl<<endl;
}
int main(){
cin>>n>>m;
int las=0;
vv[0]=1;
pr();
rep(i,1,n){
int x;cin>>x;vv[din2+1]=vv[din2];din2++;
x^=las;
rec[din2]=x;
ins(vv[din2],x);
pr();
las=x;
}
rep(i,1,m){
string ty;cin>>ty;
if(ty=="A"){
int x;cin>>x;vv[din2+1]=vv[din2];din2++;
x^=las;
rec[din2]=x;
ins(vv[din2],x);
pr();
las=x;
}else{
int l,r,x;cin>>l>>r>>x;
int ta=rec[din2]^x;
cout<<(l>1?maxyh(vv[l-2],vv[r-1],ta):max(maxyh(0,vv[r-1],ta),ta))<<endl;
}
}
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...