Infinite Card Game
这里不符合“玩家行动只与游戏局面有关”,就不要往SG函数想了
先看这篇题解
这篇题解最开始的贪心我在赛时的时候想到了的,所以说博弈论完全是可以用贪心的,不要怕
但是这里贪心还有一个问题,在对手攻击力比这张牌防御力大的区间中,对手可能有多张牌的防御力最大,这个时候难道每一个点都要连边吗?其实不用,连接其中随便一个就好了,因为我们发现,在每一回合开始时,无论是谁出牌,都不用关注出的这个牌的攻击力是多少,只要防御力是相等的,攻击力多少并不会影响接下来的游戏的走向(这点非常重要,不然时间复杂度就不对了;其实我们贪心用的也是这个思想,就是每个人出牌的时候,只要攻击力比对方上次出的牌的防御力大,我们就应该出防御力最大的,因为攻击力根本不会影响游戏的走向)
题解说的边的方向,是从自己连向对手;但是我们一般连边都是从对手连向自己(因为我们要从对手的状态推到自己的状态),然而如果按照这种连边就不太好想,而像题解这么连边,就可以利用每个点只有一个出边进行dfs,很方便地讨论每一个点的状态
比如从某个点开始走,走的方向肯定是确定的,如果最终走下来的路径是一条链,那么这个点(以及这条链上的每一个点)的胜负状态肯定是唯一确定的;如果最终是一个环,那么这些点肯定都是平局(所以我们可以不用题解说的,总牌数减必胜减必败等于平局这种方法,而是直接在图上进行统计;然而题解的这种思想也要记住)。但是其实判环的代码有点麻烦,如果用vis判断,vis每次肯定不能清空,然后可能出现这种情况
红色线段的点在上一次dfs中已经找过了,但是vis肯定为
然后这一道题目最后一个注意的点就是,题目要求Monocarp先手,看起来我们似乎只用建立Monocarp的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构