博弈论专题 1
被博弈论疯狂驲爆,开个博客抢救一下。
2022.7.19
CF1110G Tree-Tac-Toe
感觉这题非常牛逼,写个题解纪念一下。其实就是抄写 Itst 博客。
显然黑色不可能赢。
先假设没有提前涂白的点。
考虑前 步白色必胜的情况:
-
存在点的度数 。
-
存在点的度数 ,并且所连的 个点中至少有 个非叶子节点。
其余情况,树的形态就只剩下以下三种:
对于第一种,直接黑白染色,必然平局。
对于第二种,同样类似黑白染色,注意好左侧的处理,必然平局。
对于第三种,当且仅当点数个数为奇数时,白色必胜。
把点编号。白色先手染第 个点,黑色一定要染第 个点,白色再染第 个点,黑色染第 个点。最终白色可以染 个点,白色必胜。
再考虑有白色涂白的点
把一个在原图中已经涂白的点,拆成 四个未涂色的点。
其中原图与 号点的连边全都继承在 点。
假设游戏开始时直接染白 点,此时黑色必须染 点。这样,这三个新增加的点对全局没有任何影响。直接用第一种算法搞即可。
CF1076G Array Game
大力猜想,答案只跟奇偶性有关。从后往前 ,设 表示起点是 的状态。如果 有先手必败态就直接跳,否则就考虑 的奇偶性,如果是奇数就先手必胜,否则先手必败。
注意到连续的 个数里至多有一个先手必败态,对于每个线段树节点 开一个长度为 的数组(这是壬能想到的🐎艹), 表示当 的状态为 时, 的状态。合并可以 解决。
其他的操作都是线段树的基本操作了。
CF1091H New Year and the Tricolore Recreation
显然只跟差值有关。一开始我以为同一行的两个值不是独立的,打了个 的表,找到了一个非常棒的规律。我非常兴奋,打了个更大的表,发现规律没了 /fn。
发现同一行的两个值其实也是独立的,并且 SG 函数值域很小,记录 的是否在 的 里,暴力用 bitset 驲即可。
CF725F Family Photos
看错题自闭了一中午 /ll。
- ,对答案的贡献是
- ,对答案的贡献是
- :把一个卡牌的权值变成 ,答案加上 。再贪心选卡即可。
CF838C Future Failure
记 为字母 的出现次数。
发现当排列方式个数为偶数时,先手必胜。用数学归纳法证明,显然在 时成立。对于 ,如果删除一个字母可以到先手必败态,先手进行转移。否则就一直重排。
当排列个数为奇数时,每次只能长度减一。即当 为奇数时先手必胜。否则先手必败。
考虑计算在 为偶数时,排列个数为奇数的数量。对于 ,含 的幂次是 。
可以得到
因为
所以
也就是说把 拆成二进制,如果为 ,说明所有 这一位都为 。否则恰有一个 这一位为 。设 表示当前解决了前 个数,剩余集合 , 的值。直接转移是 的,会被卡。发现转移是个子集卷积的形式,复杂度就对了(然而我还是差点被卡)。
2022.7.20
一天就两题,不愧是我 /kx。
CF1610I Mashtali vs Atcoder
的情况是 AGC017D。对于 的情况,把两个黑点中间的点全都标黑。定义两个黑点中间的边是黑边(白边同理),一个黑点和一个白点之间的边是灰边。那么答案就是所有灰边的 SG 函数 xor 上黑边的奇偶性。
证明分成两个部分,第一个部分是当前情况不能走到 SG 函数相同的情况。按边的颜色分类讨论,证明是容易的。然后可以把每条黑边独立看作一个整体,每条灰边连接的一个黑点和一个白子树看作一个整体,按照 SG 函数定义证明。
LOJ3114 「SDOI2019」移动金币
SDOI2019D2T2?怕个锤子,看我直接切穿。 事实证明我还是 too naive 了。
发现并不会判先手还是后手必胜,去学了个叫阶梯 Nim 的东西,简单地说就是博弈结果仅跟奇数位的 Nim 游戏结果有关。然后发现做完了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端