happyguy 博弈论
这个博弈论是不含 SG 函数的 . 其实可能更像一个杂题选讲 .
Nim 游戏: 堆石子,Alice 和 Bob 轮流选一堆石子取若干个,谁取不了谁输 .
结论:先手必败当且仅当所有石子的异或和为 0 .
关键结论:看成 DAG,如果一个状态只能转移到必胜,那么它必败 . 如果一个状态可以转移到必败,那么它必胜 .
如果有环:
- 没有出边的状态必败 .
- 从已知信息递推出尽可能多的结果:如果一个状态只能转移到必胜,那么它必败 . 如果一个状态可以转移到必败,那么它必胜 . 可以拓扑排序实现 .
- 没有被递推出的状态平局,可以无限进行游戏 .
一张 点 边的带权有向图,Alice 和 Bob 轮流操纵一枚棋子从 点出发,每次走一步,Alice 想要最小化边权和,Bob 想要最大化边权和,问最优策略下游戏的最终得分 .
.
如果是 DAG 就是 Minimax 搜索型 DP:
其中 表示 Alice 的得分, 表示 Bob 的得分 .
改进: Dijkstra, 拓扑排序 .
时间复杂度 .
堆石子,Alice 和 Bob 轮流拿,每次选择若干个堆,如果是 Alice 操作,则全部移走 颗石子,否则全部移走 颗石子 . 如果一名玩家不能操作那么它就输了,问最优策略下谁会赢 .
.
结论:把每堆石子对 取模答案不变 .
证明:考虑模仿,如果 Alice 拿了一些大于 的堆,那么 Bob 接着拿那一堆即可使石子数减少 .
可以想一下什么情况模仿一定优 .
所有数都小于 的情况是朴素的 .
给一个长度为 的序列 ,Alice 和 Bob 轮流操作,每次选一个数变为 0,如果操作后序列异或和为 0,则该玩家获胜,问最优策略下谁会赢 .
.
结论: 是奇数一定先手必胜 .
证明:对于当前异或和 来说,如果有 那么先手必然必胜,否则只需要找到一个不存在 的 选那么后手必然赢不了,局面变为规模为 的更小局面 .
对于 是偶数,除了一击必杀肯定都是后手必胜,容易证明 .
黑板上写着 个整数 ,有两个整数 .
Alice 和 Bob 轮流操作,每次擦掉一个数, 轮后,如果 Alice 擦掉的数之和在 内,则 Alice 获胜,否则 Bob 获胜,问最优策略下谁会赢 .
且 是偶数 .
通过一些不是很困难的转化可以变成下面的问题:
有一个整数 和一个序列 ,Alice 和 Bob 轮流操作,每次 Alice 选一个 让 ,Bob 选一个 让 ,不能选重复的 . Alice 要最小化 ,Bob 要最大化 ,问最优策略下 轮之后 会是多少 .
令 为将长度为偶数的序列 排序后 的值 .
那么如果 ,答案的上界就是 ,事实上如果将权设为绝对值之差,这就是完全图的最小匹配 .
对于 ,取一个数 ,加入 后 是答案的一个上界 . 需要取使上界达到最小的 . 它的意思是 Bob 第一步选 ,中间正常游戏,最后 Alice 选 ,这样 就被累加到权值中了 .
为了分析双方的策略,并证明答案能取到上界,我们还需分析 为奇数的情形,此时做法类似,加入 后 即为上界 .
下面归纳证明答案等于上界:
-
时显然成立 .
-
对于 ,如果 是偶数,那么对于每个 可以让 ,每种都可以通过取 实现 . 注意这里重复出现的两次 删去不影响结果 .
-
对于 ,如果 是奇数,注意到对于集合 中加入两个差为 的数得到集合 ,有两条性质:
- .
- 如果 大于 的极差,那么 .
性质的证明是不困难的 . 下面分别应用两条性质得到最优策略:假设 的下标是 且 是奇数,如果 ,取走 ,否则取走 ,这样就保持当前上界了 .
从而结论已经被证明,模拟过程即可,时间复杂度 ,可以通过 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17632895.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2021-08-16 【详细揭秘】多重集の交错排列