「Codeforces 1738C」Even Number Addicts - 博弈论
题意描述
Alice 和 Bob 玩一个游戏,这个游戏中有一个有 \(n\) 项的序列 \(a\),Alice 先手,两人轮流在 \(a\) 中取走一个数。若最终取完后 Alice 取走的数的和为偶数则 Alice 获胜,否则 Bob 获胜。若两人均按最优策略决策,求出最终的获胜方。
解题思路
目前问题过于复杂,我们可以先考虑一个简单问题:若序列 \(n\) 中只有奇数,谁会赢?
这个问题答案显然。若 \(n \bmod 4 = 1\) 或 \(n \bmod 4 = 2\) 时 Bob 赢,否则 Alice 赢。
接下来我们把偶数加进来,我们设奇数个数为 \(\text{cnt1}\),偶数个数为 \(\text{cnt0}\)。对于 \(\text{cnt0} \bmod 2 = 0\) 的情况与 \(n\) 全为奇数的情况相同。因为只要其中有一个人选了偶数,则下一个人立即选偶数,相当于转化为 \(\text{cnt0} - 2\) 的局面,这样周而复始可将 \(\text{cnt0}\) 消为 \(0\)。且后手跟着先手选偶数的抉择对于 Alice 和 Bob 均是最优策略。
接下来我们考虑 \(\text{cnt0} \bmod 2 = 1\) 的情况。我们依然可以将 \(\text{cnt1} \bmod 4\) 的情况分类讨论:当 \(\text{cnt1} \bmod 4 = 1\) 时,Alice 最优策略是取走“唯一的”偶数,然后 Alice 必胜;当 \(\text{cnt1} \bmod 4 = 0\) 或 \(\text{cnt1} \bmod 4 = 3\) 时,Alice 最优策略是无论如何都不取“唯一的”偶数,然后 Alice 必胜;当 \(\text{cnt1} \bmod 4 = 2\) 时,无论 Alice 取不取“唯一的”偶数,Bob 都必胜。
代码演示
1 |
|