为什么一定需要“先手不能左移,后手不能右移”的限制?
个人认为加或不加这条限制,题目是等价的。即,先手没必要左移,后手没必要右移。证明方面,令 di 为第 i 个白子与第 i 个黑子的距离,如多数题解,我们是在对 {dk/2} 进行 K-Nim 游戏。此时若将第 i 个白子左移 t 格,有 di←di+t,且这步操作是必要的,就会有:
-
这步操作前的状态是 P;
-
所有“取石子”(白子右移)的操作只能转移到 P;
-
这步操作能转移到 N。
然而 1. 与 3. 会得到奇怪的结论:令第 i 个黑子左移 t 格,得到与这步操作前一样的状态,也是 P,且由 2.,所有“取石子”只能转移到 P,也就是说此时先手还是必须进行左移操作。但显然可行的左移次数是有限的,先手存在一个无法操作的时刻,所以矛盾。当然,”后手没必要右移“的证明同理。
顺便,有的讨论说去掉这条限制会导致循环操作,但是手握胜态的玩家没必要和另一个人不停循环呐。
现在说明了这条限制是不必要的,不过若原题有限制也无伤大雅,更离谱的是第一篇题解的各种错误:
题面显然有误,如果允许白往左、黑往右,这游戏玩不完。
上面已经讨论了,姑且算是小问题。
这种类型问题有个结论:SG[x]=x%(d+1)。
题目应该是“每次可从 d 堆石子里选”,而上式表述的是“每次可从一堆石子里选 1∼d 个”,显然不等价,例如 d=1 就有悖于经典 Nim。
即题目本质是要 各堆石子个数异或和 %(d+1)=0。
不管是从上面那条错误结论,还是从正确结论,都推不出这玩意儿吧……之后这篇题解从没有正确性可言的推导得到了正确的 DP,这应该是缘分。(
所以希望撤下 这篇题解 吧 awa。