威佐夫博弈探索纪实。
由于是纪实,所以看起来可能很下饭,请勿嘲讽——水平低的人也是有自尊的。
有两堆石子,各有 个。双方每轮可以从任意一堆拿任意个,或从两堆分别拿 个,满足 ,不能不拿。无法操作者败,问先手必胜关于 的充要条件。
考虑 P/N 态 DP,打个表先。打表的方式为固定 ,打出对于较小 的 01 矩阵,便于观察。
初步观察得到以下几个事实:
- 极大多数位置都是必胜。
- 必败态的格子除开 外分为两半,关于主对角线对称。上三角的那一半,必败态的行列号分别严格递增,将它们依次连起来,酷似一条直线。
- 列号的增加速度总是高于行号的增加速度。当 递增时,列号的增加速度在增加,行号的增加速度变化不明显。
一个自然的想法是研究上三角的必败态位置集合,记为 。考虑将 当作数列研究,将它们以及它们的差分序列同时打出来,容易发现以下结论:
- 。这就是说,。
- 中只有 两种元素,且相邻两个 之间 的数量要么是 ,要么是 。
如果我们能找到 相邻两个 之间 的数量的规律,那就做完了。而当你兴高采烈地再打出 的 的连续段长度序列时,发现又是个类似 的,极差为 且较小值连续段长度极差也为 的序列。继续递归下去,永无止境,毫无规律。找规律题就是这样,哪儿有什么顺风顺水的,你要做的就是别在一棵树上吊死,多睁眼看世界。
事实上,差分序列满足极差为 ,这就暗示我们这其实是由某个实数的整数倍下取整所生成的序列。而找不到规律,便多半是无理数,因为有理数总会形成周期。但鉴于这没有那么显然,选手做题时有概率意识不到,姑且当作后话,此处略去不谈。
另一方面,我们考虑将 们连接所得的近似直线的斜率。但由于是小数,收敛也比较慢,难以发现规律。
至此,基于 01 矩阵的几何直观已经被挖掘的差不多了。接下来尝试增大形式化程度地推导。
观察 DP 式,由于是 P/N 态 DP,它的形式只是一个集合的 mex。而 mex 容易转化为一个类似筛法的过程:每确定一个必败态 ,都将 、、 其中 ,这些格子标记一下,再选取最上、最左的没有被标记的位置,作为下一个确定的必败态。
进行一些手玩,立刻又可以发现一些结论:
- 每行 / 列都最多有一个必败态。因为考虑第一个必败态,它会标记该行 / 列以后的格子。事实上这已经通过几何直观差不多看出来了。
- 自然会考虑:每行 / 列是否至少有一个必败态,这样结合上条,就可以改为「恰好」。尝试证明,是简单的:一行有无限个格子,而除非横着标记,竖着和类似 band-matrix 的斜着标记只会影响本行有限个格子,不可能覆盖完。
由于已经确定每行恰好有一个必败态,我们立刻可以将二维转化为一维:记 为第 行的必败态的列号。由对称性有 。这样就可以知道:全体正整数在所有必败态的行号集合中都恰好出现一次,列号也是如此。所以 是 的一个置换。不妨考虑其置换环,显然是若干个二元环 。可以发现,所有 无序对就是之前提到的 。
此时我们对 的性质已经有了更多的了解,可以尝试再回过头来解 的通项。受 mex 形式的影响,依直觉考虑增量求解,如果已知 (由 ,其实也确定了 ),考虑 显然是剩下未确定的数中最小的,立刻有 。
至此,我们已经得到了 的递推式。对某个固定的 ,容易在 时间内求解 的前 项,在题目中足以获得不错的分数。至于通项,那属实有点 magic 的成分了,姑且当作知识学习吧,正所谓思而不学则殆。另一方面来看,直到当前这一步,以上观察和推导其实都是相对平凡的,只要你真的认真去推了。
接下来是 magic 的部分。参考《具体数学》第 3.2 章末尾。
定义正实数 的谱 ,可以将其看作序列,也可以看作可重集,这是等价的,因其非严格递增。
显然,没有任何两个谱是相同的。因为对于 ,显然存在足够大的 使得 。
我们定义两个谱 是 的一个划分,当且仅当 ,其中 是无交并。
我们要检查一个可重集是否等于 ,只要看其 counter array 是否全为 。而对于整除,不等号处理显然是容易的,于是我们取 counter array 的前缀和,那么只需对每个 检查不超过 的数量是否为 。
考虑一个谱 不超过 的数量 :
Beatty 定理指出:对于两个无理数 ,若 ,则 形成 的划分。
证明:只要证 。由于是无理数,那么取整号内的数一定不是整数,可以做一步化简:。为了应用 的条件,考虑拆开整除:。前两项显然为 ,后两项小数部分之和显然在 内,而 LHS 是整数,所以小数部分之和一定为 ,等式得证。
对于威佐夫博弈,由于 是 的划分,于是尝试构造无理数 满足 ,使得 。列出方程 。两边小数部分相同,于是可以去掉取整,得到 ,于是 ,解得 。到这儿已经做完了。
纵观全文,发现有一个由观察得到的关键性质 没有予以证明,现在来证一下。至于为什么放到最后,是因为一个 OIer 不需要会证明,观察、推导、猜想和打表足矣。
考虑对 归纳。此时 已经确定,并用递推式算出了 ( 的递推式不依赖此结论)。
由于 ,所以对 , 都是必胜态。
对 ,显然 能通过斜着标记覆盖到 ,也是必胜态。
这样,不会有必败态横着覆盖到 。竖着显然也不会,因为易证在 内出现过的数都小于 。接下来只要证斜着也不会覆盖到即可。
格子 能斜着覆盖 ,仅当 。而对 , 或 最大只能到 ,于是不可能覆盖 。至此,已经得证。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?