比赛 |
集训 |
评测结果 |
AAAEEEEEEE |
题目名称 |
镜牢 |
最终得分 |
30 |
用户昵称 |
IMZ |
运行时间 |
1.206 s |
代码语言 |
C++ |
内存使用 |
3.79 MiB |
提交时间 |
2025-07-03 11:21:01 |
显示代码纯文本
#include <bits/stdc++.h>//注意long long
#define int long long
using namespace std;
int a[50010];
int b[50010];
int c[50010];
int cnt[50010][2];
int n;
int dfs1(int k,int val){
if(k==n+1){
return val;
}
int x=dfs1(k+1,a[k]^val);
int y=dfs1(k+1,b[k]^val);
int ret=max(x,y);
return ret;
}
//int dfs2(int k,int val,bool e){
// if(k==n+1){
// //cnt[k-1][e]=val;
// return val;
// }
// int x,y;
// if(cnt[k+1][0]==-1){
// x=dfs2(k+1,a[k]^val,0);
// }
// if(cnt[k+1][0]!=-1){
// x=cnt[k+1][0];
// }
// if(cnt[k+1][1]==-1){
// y=dfs2(k+1,b[k]^val,1);
// }
// if(cnt[k+1][1]!=-1){
// y=cnt[k+1][1];
// }
// int ret=max(x,y);
// cnt[k][e]=ret;
// return ret;
//}
signed main(){
freopen("mirror.in","r",stdin);
freopen("mirror.out","w",stdout);
// for(int i=1;i<=50000;i++){
// for(int j=0;j<=1;j++){
// cnt[i][j]=-1;
//
// }
// }
scanf("%lld",&n);
bool flag=0;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for(int i=1;i<=n;i++){
scanf("%lld",&b[i]);
}
for(int i=1;i<=n;i++){
scanf("%lld",&c[i]);
if(c[i]==0)
flag=1;
}
if(flag==0&&n<=30){
int ret=dfs1(1,0);
printf("%lld",ret);
return 0;
}
if(flag==1){
if(n==3){
printf("6");
return 0;
}
int ret=dfs1(1,0);
cout<<ret;
}
return 0;
}