博弈论
#
一堆
先给结论:
当且仅当
定理:一个正整数可以分解为若干个不连续的 数 之和。
证明如下:
数学归纳法:
设
将
那么就考虑先手先操作
先手的最优策略一定是取
那么我们就要证明
显然成立。
边界条件为
根据
因为
#
有
先给出结论:当
尝试证明它, 有以下三个结论:
-
当
时,没有后继状态, ,必败。 -
当
时,一定存在一种取石子的方法,使取完后 。 -
当
时,一定不存在一种取石子的方法,使取完后 。
对于第二条,设
假设要把
#
假设我们正在进行一场酣畅淋漓的
感谢 oiwiki 的馈赠
这张图很有意思,你会发现没有出边的点代表的状态都是必胜态
很好理解——怎么走对手都必胜,那不就是必败,能让对手必败,不就是必胜吗?
对于一些状态数和转移数都控制在合理范围内,可以用
#
有这样一个游戏:给定一个
欸,这不和上文讲的博弈图的东西很像吗?我们可以通过对必胜态和必败态的处理解决。
问题来了:有
#
给定一个数的集合
举例:
#
设当前状态为
举个例子,依然是取石子游戏,只不过只有
-
,没有后继态, -
,后继态为 , -
,后继态为 和 , 。 -
,后继态为 和 , 。 -
,后继态为 , 和 , 。 -
你或许发现了,
#
接下来我们可以解决上面遗留的问题了:对于
先给结论:
设起点分别为
感性理解:
如果一个状态
但是也有向
#
最常见的就是反常
先给结论:
-
当
时, 为奇数是 态, 为偶数是 。 -
当有
时, 时为 态,否则为 态。
尝试证明:
第一条显然,因为每次会取完一堆。
对于第二条,分讨一下:
-
:由上文提及的 和的证明可知:一定存在一种方法可以使 ,且不会取完任何一堆石子,依然剩下不小于两堆石子 。 -
:任意操作肯定会使 ,此时就又转化为 的情况,而且随着取石子的过程进行,最后一定是这种情况取完后会出现情况 ,也就是说 的状态为 态, 的状态为 态。
得证。
#
也就是反常游戏,决策集合为空的游戏者胜。
规定当游戏结束时
-
函数不为 且游戏中某个单一游戏的 函数值大于 。 -
函数为 且没有某个单一游戏的 函数大于 。
#
相比平常的博弈,
结论:将状态为
因为后手可以选择两个状态中的任意一个操作,所以后继的状态的应该是这两个状态的和。那么只需求出两个后继的
#
有很多单一游戏,每次每个玩家需要在每一个能够操作的单一游戏上进行操作,最后结束的那个单一游戏的胜负决定整个游戏的胜负。
很明显,对于先手而言,必胜的单一游戏要延长操作次数,必败的单一游戏要减小操作次数。
所以对于每个状态
-
,结束态, -
,必败态, -
,必胜态,
设
#
有这样一种
有
先说结论:当
考虑移动偶数层的影响,假如先手移动了偶数层,则说明这些石子的移动是有必要的,那么后手就可以选择将这些石子移回偶数层,可以保证这一步操作后手是不劣的,则移动偶数层是不优的。
那么原问题就转化成普通
#
又有这样一种
有
结论:当二进制下每一位在
证明即是将每个
但注意一个点,
#
给定一颗树和书的根节点,每次选取一条边删除,然后删除不与根节点联通的连通块,谁删掉最后一条边为胜。
先给结论:叶节点的
考虑证明:
-
叶节点无边可删,
值为 -
对于节点
,假设它只有子节点 ,删除边 ,很明显剩下的根节点 -
删除
的其他子树,由于 值为 都出现过,则 归纳为 。 -
有多个子节点,每一个是独立的简单游戏,则 。
#
这里的局部连通图指图由树加边而成,且没有环有公共边,也就是环是挂在树的某个节点上。
如图

分别考虑每个环。
当断开环上的一条边时,环就转化成了两条链,分别考虑奇环和偶环,断一条边后的两条链分别同奇偶,异奇偶。
同奇偶则代表先手可以划分成长度一样的两条链,异奇偶则是先手被划分成两条一样的链,所以奇环的
将每个环看成一条链,原问题转化为树的删边游戏。

#
去除局部连通图的限制,转化为无向图的删边游戏。
给定一个无向图,选定一个根节点,轮流断边,与根节点不连通的部分被删掉,无边可删判负。
: 对无向图进行如下改动:将途中任意一个偶环缩成一个新点,任意一个奇环缩成一个新点加一个新边;所有连到原先环上的边全部改为与新点相连,这样的改动不会影响图的 值。
关于
的证明比较复杂,笔者水平有限,就不发表拙见了。
详细证明参考《Winning Ways for Your Mathematical Plays》系列
通过缩点的操作,原无向图就转化成了树的删边游戏。
#
#
: 博弈
考虑
-
选出来的石子堆异或和为
,根据 博弈的结论,此时先手必败。 -
选出来的石子堆异或和不为
,但指定 选的第一堆选完后不能使石子堆异或和为 。
假如选出来的石子堆异或和为
观察数据范围,发现值域很有意思,石子数和石子堆数是同阶的,这启发我们将石子数也考虑进状态。
枚举
最后答案为
#
:阶梯 博弈
数据范围很有提示性,
然而这并不优雅,可以再画画图,模拟模拟样例,然后就会发现一个优雅的转化。
由于空格的数量是不变的,我们可以把空格看成台阶,移动棋子就相当于下放台阶,于是原问题就转换为了阶梯
这种通过移动交换棋子状态转换为阶梯
#
:博弈论,贪心
先从简单的问题考虑,假设这棵树是一个菊花图。

先手将棋子放在
现在考虑更一般的情况。

先手依然将棋子放在
对于后手还有一种操作就是将被先手移到先手必败的子节点的棋子移回根节点,可以证明这种操作不会改变这个节点的必败态,由于减少的是字数的根节点的石子数,这个节点就更难大于他的子节点的石子数。
#
: 博弈
比较简单的
首先发现石子数的奇偶性不会影响
从
具体地,对于每一个瓶子
最后的原状态答案就是
原题还要求找第一步的取法,暴力枚举
时间复杂度为
#
: 博弈,
首先发现一次操作相当于将一个状态分成很多个字数的状态,所以是一个很明显的
直接算每一个节点剖分后的答案很明显是不现实的,设
考虑如何维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律