记录编号 602381 评测结果 AAAAAAAAAA
题目名称 4167.镜牢 最终得分 100
用户昵称 Gravatar二乾五 是否通过 通过
代码语言 C++ 运行时间 1.554 s
提交时间 2025-07-03 20:31:11 内存使用 5.84 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define cl(a) memset(a,0,sizeof a)
#define copy(a,b) copy(begin(a),end(a),begin(b))
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)

ll n,a[100005],b[100005],c[100005],x[100005],ans;

void deal(ll k,ll depth){
    x[k<<1]=x[k]^a[depth];
    x[k<<1|1]=x[k]^b[depth];
    if(depth==n){
        ans=max(ans,max(x[k<<1],x[k<<1|1]));
        return;
    }
    deal(k<<1,depth+1);
    deal(k<<1|1,depth+1);
}

int main(){
    #ifndef ONLINE_JUDGE
        freopen("mirror.in" ,"r",stdin );
        freopen("mirror.out","w",stdout);
    #endif
    cin>>n;
    foru(i,1,n){
        cin>>a[i];
        ans^=a[i];
    }
    foru(i,1,n) cin>>b[i];
    foru(i,1,n){
        cin>>c[i];
        x[i]=a[i]^b[i];
    }
    for(ll i=59;i>=0;i--){
        ll t=n;
        while(t&&!((x[t]>>i)&1)){
            t--;
        }
        if(!t)continue;
        if(((ans>>i)&1)^c[t])ans^=x[t];
        for(ll j=1;j<=n;j++){
            if((x[j]>>i)&1)x[j]^=x[t];
        }
    }
    cout<<ans;
    return 0;
}