CF36D New Game with a Chess Piece
巴什博弈好题。
如果没有跳 \(k\) 格的操作,根据奇偶性就可以得到答案。
发现无论 \(k\) 是多少,用一次肯定扭转状态(相当于走了偶数次)。
那无非就是不用操作赢的人想将操作次数控制为偶数,不用操作输的人想将操作次数控制为奇数。
拿想改变状态的先手举例:
- 如果跳一次后对手不能跳了,就赢了。
- 如果各跳一次后自己不能跳了,就输了。
- 如果自己不跳对手跳循环两次后自己不能跳了,也输了。
- 如果自己不跳对手跳再自己跳对手不跳后自己不能跳了,也输了。
但问题是判断后手到底能不能跳。对于后两种情况,可以发现两次都是 \(k+1\)。
从这里我们可以归纳出一种策略,即对手跳,自己就不跳;对手不跳,自己就跳。
对于跳 \(\lfloor\frac{\min\{n-1,m-1\}}{k+1}\rfloor\) 次能赢的人来说,他只要按这个策略操作,就可以获得胜利!
但其实有很多细节。
如果先手想要按这个策略操作,那他第一次到底是走还是跳呢?
- \(\min\{n-1,m-1\}\bmod(k+1)=0\),第一次跳即可。
- \(\min\{n-1,m-1\}\bmod(k+1)>0\),第一次走即可。
如果后手想要按这个策略操作,先手有机会扭转局势!
- \(\min\{n-1,m-1\}\bmod(k+1)=k\),先手第一次跳。
但这样交上去会 WA,观察数据再随便找找可以发现 \(k=1\),\(n=m=3\) 的时候会输出 +
而答案是 0
。
设 \(\min\{n-1,m-1\}=d(k+1)\)。先手第一次跳后实行策略,接下来的 \(d-1\) 轮每轮和都是 \(k+1\)。最后剩下 \(1\),当 \(k>1\) 时先手是不能跳的,而 \(k=1\) 时可以。我们正是忽略了这个问题。
所以特判 \(k=1\) 即可。具体地:
- \(n-1,m-1\) 均是偶数。如果先手走,后手就在同一维走;如果先手跳,后手就跟着跳。先手必败。
- \(n-1,m-1\) 存在至少一个奇数。如果两个都是奇数,就跳,否则走奇数那一维,这样就变成上一种情况。先手必胜。
补充一个小疑点,为什么 \(k>1\) 较大的那一维的影响仅仅在于奇偶性?
考虑先手走了较大的那一维,如果后手再走那一维仍然不会改变大小关系,那么显然正确。如果改变了大小关系,那此时两维大小相等,同时小的那维没有改变,相当于扭转了先后手,同样正确。\(k=1\) 的情况说白了也是如此。