happyguy 博弈论

这个博弈论是不含 SG 函数的 . 其实可能更像一个杂题选讲 .

Nim 游戏:n 堆石子,Alice 和 Bob 轮流选一堆石子取若干个,谁取不了谁输 .

结论:先手必败当且仅当所有石子的异或和为 0 .

关键结论:看成 DAG,如果一个状态只能转移到必胜,那么它必败 . 如果一个状态可以转移到必败,那么它必胜 .

如果有环:

  • 没有出边的状态必败 .
  • 从已知信息递推出尽可能多的结果:如果一个状态只能转移到必胜,那么它必败 . 如果一个状态可以转移到必败,那么它必胜 . 可以拓扑排序实现 .
  • 没有被递推出的状态平局,可以无限进行游戏 .

ABC261Ex Game on Graph

一张 nm 边的带权有向图,Alice 和 Bob 轮流操纵一枚棋子从 s 点出发,每次走一步,Alice 想要最小化边权和,Bob 想要最大化边权和,问最优策略下游戏的最终得分 .

n,m2×105 .

如果是 DAG 就是 Minimax 搜索型 DP:

dpu,0=minvu{dpv,1+w(u,v)}dpu,1=maxvu{dpv,0+w(u,v)}

其中 dpu,0 表示 Alice 的得分,dpu,1 表示 Bob 的得分 .

改进:dpu,0 Dijkstra,dpu,1 拓扑排序 .

时间复杂度 O(mlogn) .

ARC143C Piles of Pebbles

n 堆石子,Alice 和 Bob 轮流拿,每次选择若干个堆,如果是 Alice 操作,则全部移走 x 颗石子,否则全部移走 y 颗石子 . 如果一名玩家不能操作那么它就输了,问最优策略下谁会赢 .

1n2×105 .

结论:把每堆石子对 x+y 取模答案不变 .

证明:考虑模仿,如果 Alice 拿了一些大于 x+y 的堆,那么 Bob 接着拿那一堆即可使石子数减少 x+y .

可以想一下什么情况模仿一定优 .

所有数都小于 x+y 的情况是朴素的 .

ARC131C Zero XOR

给一个长度为 n 的序列 {an},Alice 和 Bob 轮流操作,每次选一个数变为 0,如果操作后序列异或和为 0,则该玩家获胜,问最优策略下谁会赢 .

1n4×105 .

结论:n 是奇数一定先手必胜 .

证明:对于当前异或和 S 来说,如果有 S=ai 那么先手必然必胜,否则只需要找到一个不存在 ajai=Sai 选那么后手必然赢不了,局面变为规模为 n2 的更小局面 .

对于 n 是偶数,除了一击必杀肯定都是后手必胜,容易证明 .

AGC056D Subset Sum Game

黑板上写着 n 个整数 a1n,有两个整数 L,R .

Alice 和 Bob 轮流操作,每次擦掉一个数,n 轮后,如果 Alice 擦掉的数之和在 [L,R] 内,则 Alice 获胜,否则 Bob 获胜,问最优策略下谁会赢 .

2n5000n 是偶数 .

通过一些不是很困难的转化可以变成下面的问题:

有一个整数 x 和一个序列 {an},Alice 和 Bob 轮流操作,每次 Alice 选一个 aixx+ai,Bob 选一个 aixxai,不能选重复的 . Alice 要最小化 |x|,Bob 要最大化 |x|,问最优策略下 n 轮之后 |x| 会是多少 .

v(a) 为将长度为偶数的序列 a 排序后 (a2a1)+(a4a3)+ 的值 .

那么如果 x=0,答案的上界就是 v(a),事实上如果将权设为绝对值之差,这就是完全图的最小匹配 .

对于 x0,取一个数 p,加入 p,x+pv(a) 是答案的一个上界 . p 需要取使上界达到最小的 . 它的意思是 Bob 第一步选 p,中间正常游戏,最后 Alice 选 x+p,这样 x 就被累加到权值中了 .

为了分析双方的策略,并证明答案能取到上界,我们还需分析 n 为奇数的情形,此时做法类似,加入 pv(a) 即为上界 .

下面归纳证明答案等于上界:

  • n=1 时显然成立 .

  • 对于 n>1,如果 n 是偶数,那么对于每个 x 可以让 xx+ai,每种都可以通过取 p=ai 实现 . 注意这里重复出现的两次 ai 删去不影响结果 .

  • 对于 n>1,如果 n 是奇数,注意到对于集合 S 中加入两个差为 d0 的数得到集合 S,有两条性质:

    • v(S)dv(S)v(S)+d .
    • 如果 d 大于 S 的极差,那么 v(S)dv(S) .

    性质的证明是不困难的 . 下面分别应用两条性质得到最优策略:假设 x 的下标是 pp 是奇数,如果 p1,取走 ap1,否则取走 an,这样就保持当前上界了 .

从而结论已经被证明,模拟过程即可,时间复杂度 Θ(n2),可以通过 .

posted @   yspm  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
历史上的今天:
2021-08-16 【详细揭秘】多重集の交错排列
😅​
点击右上角即可分享
微信分享提示