比赛 |
集训 |
评测结果 |
WWWEEEEEEE |
题目名称 |
镜牢 |
最终得分 |
0 |
用户昵称 |
Hollow07 |
运行时间 |
1.046 s |
代码语言 |
C++ |
内存使用 |
3.78 MiB |
提交时间 |
2025-07-03 11:07:22 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAXN=5e4+100;
ll n,a[MAXN],b[MAXN],c[MAXN];
ll dp[MAXN],x,y,ans;
int main(){
freopen("mirror.in","r",stdin);
freopen("mirror.out","w",stdout);
scanf("%lld",&n);
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);
}
ans=0;
for (int i=1;i<n;i++){
if (c[i]){
x=ans^a[i];
y=ans^b[i];
if (min(x^a[i+1],x^b[i+1])<min(y^a[i+1],y^b[i+1])){
ans=y;
}else{
ans=x;
}
}else{
x=ans^a[i];
y=ans^b[i];
if (min(x^a[i+1],x^b[i+1])<min(y^a[i+1],y^b[i+1])){
ans=x;
}else{
ans=y;
}
}
}
if (c[n]){
ans=max(ans^a[n],ans^b[n]);
}else{
ans=min(ans^a[n],ans^b[n]);
}
printf("%lld",ans);
return 0;
}