P10398 题解

blog。博弈论。


考虑使用 AGC002E 的方法分析:将 ai 升序排列,然后画成下图状物。

一次操作相当于消掉最下面的一行 / 最左边的一列,消完的人胜利。

将这个问题转换为:你在左下角,每次可以往上面(上面是空的就走到右上)/ 右边走一步,谁先走到最后一列就赢了。

于是可以写出 O(ai) 的弱智 DP,答案即 dp1,1。获得 23 分的高分。


下文令 (a,b) 表示到达第 a 堆石子第 b 行的位置。

打表有一些观察:(a,#) 处,除去最顶上的位置,其余位置胜负态交替。出现这个的原因是「上面是空的就走到右上」,所以可能需要特判边界。

正解就是模拟这个 DP。考虑 (2,1),由于 ai 互不相同,故 a22(2,1) 不会受到边界情况牵制。于是 (2,1) 为胜利当且仅当 n=1an1n(mod2)

(2,1) 输了,此时:

  • a12,此时考虑 (1,2) 位。注意到此时 a23,结合 (2,1) 输了,则 (1,2) 必胜,进而 (1,1) 位的两个决策都会使对手进入必胜态,于是此时直接输出 Bob
  • 否则 a1=1,此时考虑 (2,2) 位:也就是把下面一行删掉,进而成为了一个大小为 (n1) 的子问题,这个子问题的答案与原问题的答案相反。

想清楚后,这个「分治」的过程也可以用循环简单 O(n) 实现。

posted @   liangbowen  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示