比赛 集训 评测结果 AAAEWEEEEE
题目名称 镜牢 最终得分 30
用户昵称 淮淮清子 运行时间 1.139 s
代码语言 C++ 内存使用 6.44 MiB
提交时间 2025-07-03 10:52:13
显示代码纯文本
#include<iostream>
#include<unordered_map>
using namespace std;

#define ull unsigned long long
const int MAXN = 50000 + 5;

int n;
ull a[MAXN], b[MAXN];
int c[MAXN];

unordered_map<ull, ull> dp[MAXN];

ull dfs(int i, ull ans){
    if(i > n) return ans;
    auto &m = dp[i];
    if (m.count(ans)) return m[ans];
    if(c[i] == 1){
        ull resA = dfs(i + 1, ans ^ a[i]);
        ull resB = dfs(i + 1, ans ^ b[i]);
        return m[i] = max(resA, resB);
    }
	else{
        ull resA = dfs(i + 1, ans ^ a[i]);
        ull resB = dfs(i + 1, ans ^ b[i]);
        return m[i] = min(resA, resB);
    }
}

int main(){
	freopen("mirror.in","r",stdin);
	freopen("mirror.out","w",stdout);
    cin.tie(0) -> ios::sync_with_stdio(0);
    cin >> n;
    for (int i = 1;i <= n;i ++) cin >> a[i];
    for (int i = 1;i <= n;i ++) cin >> b[i];
    for (int i = 1;i <= n;i ++) cin >> c[i];
    ull ans = dfs(1, 0);
    cout << ans << "\n";
    return 0;
}