Nim游戏2(台阶型)

有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

解题思路

乍一看好像和刚刚的没啥关系,接下来给个逆天的转化
考虑棋子\(k\)向左移动,那么与左侧第一个棋子\(k-1\)之间的空格不久对应的减少了吗,而没有空格能让我们减少的时候,就代表游戏over,欸,这是不是有点像上文的nim游戏台阶型了,两个棋子中间的空格就代表这一级台阶的石子数目,然后,就欧克啦

posted @ 2024-11-21 19:38  hapihapi  阅读(54)  评论(0)    收藏  举报