阶梯博弈:http://blog.csdn.net/kk303/article/details/6692506
从后往前两两绑成一对,若总数为奇数,则把最前面的棋子和边界绑定。在同一对棋子中,若对手移动前一个,你总能将后一个移动相同步数,所以一对棋子的前一个与前一对棋子的后一个之间的距离对最终结果无影响。只需考虑同一对棋子之间的空位,就成了N堆Nim游戏。
和上题类似,除了两种特殊情况:
①King是第一个人,先手胜; ②King是第二个人,且一共有奇数个人时,第一堆大小要减一。
bzoj1115 石子游戏Kam
题意:有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数。两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏。问先手是否必胜。
题解:差分求出相邻两堆石子数差,要求差分数组大于等于0。移走石子等价于从一堆中取石子往后一堆放,即转化为阶梯博弈。只考虑奇数梯,进行N堆Nim游戏。
找规律~发现 只有编号为1,3,4的盒子 不能移动。
由已知条件(A + B) % 3 = 0 && (A + B) % 2 = 1可得:(A+B) % 6 = 3
规律:
0->3->0->3
2->1->2->1
5->4->5->4
只要考虑 盒子编号模6为0,2,5中的卡片数,进行N堆Nim游戏。
根节点深度为0,不能移动。只要考虑深度为奇数的节点的石子数,进行N堆Nim游戏。
蓝桥杯 高僧斗法:输出先手第一步,枚举判断即可。