有1~n级台阶,每个台阶有a[i]个石子,每次操作可以将k级台阶的一些石子移动到k-1级台阶上。移动到第0级不可再动,无法再操作者输,给出石子分布情况,问先手是否必胜
和取石子nim游戏本质相同,考虑移动石子的过程,通过“观察”可得,结论是奇数台阶数量异或和为0则先手必输,否则必赢。
结合上一篇的两个定理,来证明一下
还是设\(S\)为a[1] ^ a[3]...的结果(奇数台阶异或和),假设\(S\)非0,此时可以看作就这些石子,每次往下一阶移动石子就是取走石子,所以一定是可以通过一次操作使得\(S\)变为0的
来考虑对手面对\(S\)为0的局面是否必输:
对手可能的操作1:选择某个奇数台阶移动任意的石子,根据定理,这一定会使\(S\)变大,走向可能的必胜局面
对手可能的操作2:选择某个偶数台阶移动任意的石子,会给某个奇数台阶数量增加,打破二进制位的位数平衡导致\(S\)变大
所以先手的人会再把\(S\)变成0,如此循环,最终轮到先手的人接手仅剩第一个台阶的一些石子,此时\(S\)肯定是非0的,先手的人直接一步结束游戏即可
同理,如果开始\(S\)等于0,反过来先手的人必输。
证毕
来点有意思的延伸题目
POJ 1704
Georgia 和 Bob 决定玩一个自己发明的游戏。他们在纸上画一排网格,从左到右用 1、2、3 等对网格进行编号,并将 N 个棋子放在不同的网格上,如下图所示,例如:
Georgia 和 Bob 依次移动棋子。每次玩家都会选择一个棋子,并将其向左移动,而不会越过任何其他棋子或越过左边缘。玩家可以自由选择棋子移动的步数,但限制是棋子必须至少移动一步,并且一个网格最多可以包含一个棋子。无法移动的玩家输掉游戏。
自从“Lady first”以来,Georgia 总是先玩。假设 Georgia 和 Bob 都在游戏中尽了最大的努力,即,如果他们中的一个知道赢得游戏的方法,他或她将能够执行它。
考虑到 n 个棋子的初始位置,您能预测谁最终会赢得比赛吗?
解题思路
乍一看好像和刚刚的没啥关系,接下来给个逆天的转化
考虑棋子\(k\)向左移动,那么与左侧第一个棋子\(k-1\)之间的空格不久对应的减少了吗,而没有空格能让我们减少的时候,就代表游戏over,欸,这是不是有点像上文的nim游戏台阶型了,两个棋子中间的空格就代表这一级台阶的石子数目,然后,就欧克啦