题目名称 | 4167. 镜牢 |
---|---|
输入输出 | mirror.in/out |
难度等级 | ★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 |
|
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:8, 提交:31, 通过率:25.81% | ||||
|
100 | 0.639 s | 5.44 MiB | C++ |
|
100 | 0.647 s | 5.48 MiB | C++ |
|
100 | 0.650 s | 6.01 MiB | C++ |
|
100 | 0.658 s | 6.00 MiB | C++ |
|
100 | 0.698 s | 3.03 MiB | C++ |
|
100 | 1.491 s | 4.33 MiB | C++ |
|
100 | 1.521 s | 5.78 MiB | C++ |
|
100 | 1.554 s | 5.84 MiB | C++ |
|
30 | 1.038 s | 3.38 MiB | C++ |
|
30 | 1.042 s | 3.83 MiB | C++ |
本题关联比赛 | |||
集训 |
关于 镜牢 的近10条评论(全部评论) |
---|
你在镜牢中触发了一场遭遇战
一场战斗由两名角色进行。分成 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,题面有修改)