题意
A ( A l i c e ) A(Alice) A(Alice)和 B ( B o b ) B(Bob) B(Bob)在玩取石子游戏
共 N N N堆石子排成一排,A和B轮流进行如下操作(A是先手):
- 从某堆石子中取走一个
- 合并任意两堆石子
无法进行操作的人输
让你判断A是否有必胜策略
有多组测试数据哦
思路
假设:我们当前所有堆得石子个数都严格大于1
我们令 b=堆数+石子总数-1
此时先手必胜 ⟺ \Longleftrightarrow ⟺ b是奇数
为什么呢?
每个操作一会使石子总数减一
二每个操作二会使石子堆数减一
因此b就是操作总数(最后只剩一堆石子,且这堆石子中只有一个石子)
如果b是奇数,一定存在一个偶数后继
我们便把这个偶数后继留给对手,直到对手无路可走
而如果b是偶数,所有后继必然是奇数
所以此时先手必胜
对于b是偶数的情况,若采取合并措施,则b变为奇数
若从某一堆中去一个石子
如果取后这个堆得石子个数大于1,那么b变为奇数
否则