关注
必败态的定义就是,”面对当前状态的选手一定会输“的状态。而我们又知道这个游戏没有平局,所以在所有状态中除了必败态的那些状态都是必胜态(这个状态不是必败态,也就是说必定存在至少一种最优的策略,使得只要你按这种策略走,无论对方怎么走,你都能必胜,否则如果不存在这种能让你必胜的策略,那你就是必败的了,总不能平局吧)。清楚了这个概念之后就可以开始打表了。
这里我们用(n,m)这种写法来枚举状态,同时保证 m>n(不考虑 m=n 的情况,太明显了),毕竟 (1,2)和(2,1)是一样的嘛。
首先我们知道最初的必败态是(0,0),很显然嘛,题目里都说了,谁没法拿石子谁就输,所以如果你遇到了(0,0),那你就输了,所以(0,0)是必败态。然后我们看(1,m),很显然(1,m)都能通过一次操作走到(0,0),也就是说让后手的玩家碰到必败态,所以(1,m)都是必胜态,然后我们看(2,3),发现(2,3)不能一次操作走到(0,0),也就是说对(2,3)进行一次操作以后后,后手玩家一定会碰到必胜态 【 因为(2,3)之前的状态除了(0,0)都是必胜的,而且你又走不到(0,0)】,即(2,3)是个必败态,然后其他的(2,m)都可以一次操作走到(2,3),所以当 n 为 2 时,除了(2,3)都是必胜的。
继续推下去,易得出(3,m)和(4,m)也都是必胜的(都能一次操作走到(2,3))。
然后看 n=5时,(5,6)必胜,因为可以一次走到(2,3),(5,7)不能一次走到(2,3),也不能一次走到(0,0),而(5,7)其他能走的状态前面已经枚举过了,都是必胜态,所以(5,7)也是必败的。
一直这样递推下去,打表就OK了。我们用一个集合存好全部的必败态,集合最开始只有一个元素(0,0),每次遇到一个新的状态就判断一下它能否跳到存着所有必败态的集合中的任意一个状态,如果能,则说明这是必胜态,如果不能,则这是一个新的必败态,把他加入集合之中去,暴力跑完所有状态就行了。
查看原帖
9 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
147791次浏览 2517人参与
# 秋招落幕,你是He or Be #
3248次浏览 76人参与
# 应届生进小公司有什么影响吗 #
109105次浏览 1116人参与
# 比亚迪工作体验 #
70186次浏览 254人参与
# 你面试体验感最差/最好的公司 #
3090次浏览 56人参与
# 工作中听到最受打击的一句话 #
2566次浏览 61人参与
# 大厂VS公务员你怎么选 #
71214次浏览 660人参与
# 重来一次,你会对开始求职的自己说 #
3014次浏览 71人参与
# 一人说一个提前实习的好处 #
3396次浏览 70人参与
# 团建是“福利”还是是 “渡劫” #
4056次浏览 110人参与
# 实习没事做是福还是祸? #
8346次浏览 135人参与
# 如何排解工作中的焦虑 #
243868次浏览 2241人参与
# 从顶到拉给所有面过的公司评分 #
144807次浏览 518人参与
# 今年你最想重开的一场面试是? #
1443次浏览 25人参与
# 你小心翼翼的闯过多大的祸? #
6980次浏览 109人参与
# 联影求职进展汇总 #
123846次浏览 781人参与
# OPPO求职进展汇总 #
755923次浏览 5390人参与
# 互联网公司爆料 #
158595次浏览 724人参与
# 产品实习,你更倾向大公司or小公司 #
189119次浏览 2053人参与
# 秋招结束之后的日子 #
113920次浏览 1039人参与