题目名称 4167. 镜牢
输入输出 mirror.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarflyfree 于2025-07-02加入
开放分组 全部用户
提交状态
分类标签
贪心 线性基
分享题解
通过:8, 提交:31, 通过率:25.81%
Gravatar李奇文 100 0.639 s 5.44 MiB C++
GravatarHollow07 100 0.647 s 5.48 MiB C++
Gravatar左清源 100 0.650 s 6.01 MiB C++
Gravatarflyfree 100 0.658 s 6.00 MiB C++
GravatarLikableP 100 0.698 s 3.03 MiB C++
GravatarOTTF 100 1.491 s 4.33 MiB C++
Gravatar二乾五 100 1.521 s 5.78 MiB C++
Gravatar二乾五 100 1.554 s 5.84 MiB C++
Gravatar梦那边的美好ET 30 1.038 s 3.38 MiB C++
GravatarOTTF 30 1.042 s 3.83 MiB C++
本题关联比赛
集训
关于 镜牢 的近10条评论(全部评论)

4167. 镜牢

★★★   输入文件:mirror.in   输出文件:mirror.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

你在镜牢中触发了一场遭遇战

一场战斗由两名角色进行。分成 n 个回合,每个回合有一个 ci,ci = 1 时玩家拥有主动权,ci = 0 时敌人拥有主动权,战斗时有一个指数 x 表示战斗对谁更有利。一开始 x = 0。

第 i 个回合,拥有主动权的角色可以在两个技能 a 和 b 中选择一个,发动 a 技能会使 x 异或上 ai,同理发动 b 技能会让 x 异或上 bi。

x 越大,说明战斗对玩家更有利,因此玩家要尽可能让 x 更大,同理敌人会尽可能让 x 更小。

你的对手和作为玩家的你在战斗开始前就预知了 a,b,c 三个序列,你想要知道在你和对手都采取最优策略下最终 x 为多少。

【输入格式】

第一行一个整数 n 表示战斗的回合数量

接下来一行 n 个整数表示 a1~an

接下来一行 n 个整数表示 b1~bn

接下来一行 n 个整数表示 c1~cn

【输出格式】

输出一个整数表示最后的 x。

【样例输入】

3
6 1 2
6 2 3
0 1 0

【样例输出】

6

【样例说明】

第一回合对手掌握主动权,但是 a1 = b1,所以对手的选择并不重要

第二回合玩家掌握主动权

如果玩家发动技能 a,x = 7,对手为了让 x 更小,在第三回合中会选择技能 b,最终 x = 4

如果玩家发动技能 b,x = 4,对手则会选择发动技能 a,最终 x = 6

玩家为了让 x 更大,会在第二回合选择发动技能 b,所以答案为 6

【数据规模与约定】

对于前 30% 的数据,ci = 1,n <= 20

对于 100% 的数据 n <= 1e5,ai <= 2^60, bi <= 2^60

大样例

【来源】

CodeForces(Problem - 2115D - Codeforces,题面有修改)

原题链接