比赛 集训 评测结果 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;
}