Part.4【博弈论】

---恢复内容开始---

不要问我为什么突然跳到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

时间: 2024-10-19 08:36:17

Part.4【博弈论】的相关文章

hdu 1536 S-Nim 博弈论,,求出SG'函数就可以解决

S-Nim Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4975    Accepted Submission(s): 2141 Problem Description Arthur and his sister Caroll have been playing a game called Nim for some time now

UVA 10561 Treblecross(博弈论)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32209 [思路] 博弈论. 根据X分布划分禁区,每个可以放置的块为单独一个游戏.按长度定义状态,构造sg函数.依次试验每一种放法. [代码] 1 #include<cstdio> 2 #include<vector> 3 #include<cstring> 4 #include<algorithm> 5 using names

博弈论的学习之始

今天看了耶鲁大学关于<博弈论>的公开课视频.于是想记录下关于博弈论的学习经历.最近赶上期末,事情超多,唉!不定期观看并记录吧! 视频中没有给出博弈论的具体定义,就不记录了吧!英文名Game Theory. 教授推荐课程书籍:杜塔 <策略与博弈>(课程基础书籍).乔治·沃森<策略>(教授说偏难!).<战略思想>(没看到具体谁的,教授说用来催眠不错!) 第一节课主要讲了博弈的几个原则. 1.不要选严格劣势策略: 2.理性选择造成次优选择: 3.要会换位思考: 4

hdu1856 Brave Game(博弈论)

应该是最基础的那种博弈论的题 (m+1)+多余 == n 如果没有多余,那么就后手赢了 #include<cstdio> int main() { int n; scanf("%d",&n); while(n--){ int x,p; scanf("%d%d",&x,&p); if(x%(p+1)==0 ) printf("second\n"); else printf("first\n")

博弈论(转)

有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理.下面我们来分析一下要如何才能够取胜. (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发

【博弈论】威佐夫博弈

威佐夫博弈     威佐夫博弈:有两堆石子,每次一个人可以两堆同时取相同数量的石子,也可以只取其中一堆的石子,最后谁取完谁获胜,请问先手还是后手胜? 对于学过一些博弈论基础的来说,我们需要找到那些能让先手必输的局势,那么由这些局势在规定范围内拓展的局势也是先手必输的局势(但在这里双方自由选取,不适用).我们可以得出一些局势使A必输:(0,0) (1,2) (3,5) (4,7) (6,10) (8,13) (9,15) (11,18) (12,20)……我们称这些局势为奇异局势 不难发现,如果我

HDU 5963 朋友 【博弈论】 (2016年中国大学生程序设计竞赛(合肥))

朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的:给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始,双方轮流进行 操作.当一方操作时,他们需要先选择一个不为根的点,满足该点到其父亲的边权为1; 然

博弈论之入门小结

经过几天的学习和刷题,总算对博弈论的基础懂了一些,学习过程中参考了以下两位的总结: 博弈总结        博弈论题目列表 下面列出一些基础博弈的结论定理(证明过程略): (一)巴什博弈(Bash): 一个堆中有n个物体,两人轮流取,每次至少取1个,至多取m个,最后取完者胜. 取胜法则:令n=(m+1)*r+s  (s<=m,r为任意自然数),先取者要想取胜,则要求第一次取时必须取s个. (二)威佐夫博弈(Wythoff): 两个堆中各有若干个物品,两人轮流从某一堆或从两堆中同时取同样多个物品(

工作&ldquo;触雷&rdquo;经历与总结--记博弈论的应用

工作三年,职场受挫.一些值得说或者不值得说的事情,也懒得去记录.无奈,更多时无奈.内心的骄傲或者自负也不值得炫耀.天生骄傲,或者也只是自身内心的呐喊.毕竟,骄傲的人也不会说出来,搞的好像是有点似得. 书归正传.谈回事件的经过. 周末值班,又碰到了产线断网的停线Mail莫名其妙的丢了出来.加上不久前,数据库自动丢出的session高的Mail,或许有某种联系.叙述从如下几个角度展开. 第一,用户面. 没有常规的电话通知,单纯的停线Mail.看到后,第一反应时确认, 根据多次此种,注意是此种,已经明