---恢复内容开始---
不要问我为什么突然跳到Part.4,我懒得解释。
在蔡大神的论文+讲解和HZW的题库下,自己大概是明白什么是博弈论的皮毛了吧。
先说SG定理吧。
对于游戏中的状态,我们给每个状态定义一个必胜态和必败态。区别在于前者可以通过一次操作到达必败态,但后者无法做到(后者在一次操作后所能到达的状态全部都为必胜态)
接着引进SG函数,每个状态都有一个SG值,这个值由它所能到达的状态的SG值决定。(这里的所能到达的状态指的是经过一次操作能到达的状态,下同)
SG值有以下性质:
- SG值始终为非负整数。
- 每个状态的SG都与它能到达的状态的SG值不相同。
- 在满足上面两个条件的情况下SG值应该尽量小。
我们会发现,SG=0的状态为必败态,SG≠0的即为必胜态。
SG定理:对于一个组合游戏,它状态的SG值即为各个子游戏状态的SG值的异或和(Nim和)。
反胜利条件:上面的必胜和必败都是基于“无法操作者败”这个规则来解释的。若某组合游戏的胜利条件是“无法操作者胜”的话,必胜态必须满足:
- SG异或和>0且石子数大于1的堆数>0
- SG异或和=0且石子数大于1的堆数=0
其余的就是必败态了。
Nim阶梯:不懂。。。反正有这种东西就对了。
常见的几种公平游戏:
Nim游戏:有N堆石子,每次可从一堆石子中拿走任意数量的石子。
解法:把每堆石子看成子游戏,其SG值等于其石子数。
图上移子游戏:一个有向图上有一个棋子沿着有向边移动。
解法:赤裸裸的SG定理直接用。
树上删边:N棵树,不断删边,每次删边也会把删完无法与根相连的子树删去。
解法:把树上的每个点看成一个组合游戏,它的儿子就是子游戏。
图上删边:上一题的升级版,这次图中可以出现环。
解法:先缩环,奇数边环缩成一条边,偶数边环缩成一个点。接着解法同上题。
NimK游戏:Nim的升级版,每次可从K堆拿走任意数量的石子。
解法:把N堆石子的石子数用二进制表示,统计每一个二进制位上的1的个数,若每一位上1的个数mod(k + 1)全为0,则必败,否则必胜。(证明在此)
BZOJ 2281: [SDOI2011]黑白棋
为什么我的第一题都是最丧病的逗QAQ
首先,我们会发现,白棋必须往右移,黑棋必须往左移(最优策略),而且当黑白棋两两紧靠时就是必败态。
这样我们可以把第i个白棋和第i个黑棋之间的空格看成第i个石子堆,问题即可转化成NimK问题。
然后用组合数学算出必败态的方案数,再用总方案数减去必败方案数即可得到必胜方案数。
博弈论+组合数学+DP。。。
我要吐了。。。
BZOJ 2281: Nim
第一眼看到名字,以为真的是赤裸裸的Nim问题,结果还是被骗了。
尼玛这不就是一道数据结构题吗,维护一棵树支持点修改和链查询。。。
逗比的我用了树链剖分,硬是把DFS序的功能忘得一干二净QAQ
BZOJ 2463: [中山市选2009]谁能赢呢?
判断奇偶即可。
证明:用多米诺铺满棋盘,然后自行观察。
POJ 3537: Crosses and Crosses
初始时为状态N,假设我们在第K格中打叉,那么状态N会分裂成状态K-3和状态N-K-2。SG定理搞。
BZOJ 1188: [HNOI2007]分裂游戏
子游戏即每颗豆子。状态分裂+SG定理。
POJ 3710: Christmas Game
图上删边游戏。
但这道题的图比普通图多了一个定义:每个环上只有一个度数大于2的点。所以我们可以利用这个特性来缩环。
POJ 1704: Georgia and Bob
Nim阶梯的应用,两两分组转成Nim游戏。
POJ 3480: John
Nim阶梯的应用,两两分组转成Nim游戏。
POJ 2068: Nim
Nim的变种。SG定理搞。
POJ 2960: S-Nim
Nim的变种。依旧SG定理搞。
POJ 2484: A Funny Game
先考虑链的SG值,再求初始状态的SG值。
POJ 2505: A multiplication game
2-9:必胜
10-18:必败
19-162:必胜
163-324:必败
……
POJ 2425: A Chess Game
图上移子游戏。
POJ 2975: Nim
普通Nim。
POJ 1740: A New Stone Game
施工中……
POJ 2234: Matches Game
普通Nim。
CF 493D: Matches Game
判断棋盘奇偶性即可。
证明:若是奇数则必败,因为对手可以模仿你的动作(沿中轴对称模仿)。若偶数时向右移一步则变成对手的必败态了。
CF 451A: Matches Game
一眼题,看行列的最小值的奇偶性。
代码我就不发了,谁要的话可以去这里找:【Part 4】Game Theory