博弈论
文章平均质量分 61
Jozky86
这个作者很懒,什么都没留下…
展开
-
CF455B A Lot of Games
CF455B A Lot of Games题意:Andrew,Fedor和Alex是三个善于创造的人。现在,他们发明了一种字符串双人游戏。给出n个非空字符串。在游戏中,两位玩家一起建造一个单词。开始时,单词是一个空字符串。两位玩家轮流操作。一位玩家在他的回合中,必须在单词的后面添加一个字母,使得添加后的单词是n个字符串中至少一个的前缀。当一位玩家不能操作时,他就输掉了游戏。Andrew和Alex决定玩k次。上一局的负者是下一局的先手。他们决定,在最后一局中获胜的人获得整场游戏的胜利。Andrew和A原创 2021-10-31 22:14:35 · 2063 阅读 · 0 评论 -
P2148 [SDOI2009]E&D
P2148 [SDOI2009]E&D题意:有2n堆石子,第2k-1堆和第2k堆是一组,现在两个人轮流操作,每次操作任选一组石子,然后将改组中的一堆石子移走,将另一堆式子分割成两堆,形成新的两堆石子,要求每堆石子数必须大于0,谁先不能操作谁输掉游戏题解:我一开始先打表,利用sg的性质打表,但是没有发现啥规律,然后看了题解,题解里都是打表,不过人均一眼看出规律。。还是我太菜了std::map<pii, int> sg;int calc(pii c) { if (sg.原创 2021-08-13 21:41:05 · 217 阅读 · 0 评论 -
GCD Game HDU - 7061
GCD Game HDU - 7061题意:有n个数ai,两个人轮流操作,每次选择一个数ai,再人选一个x(1<=x<ai),然后用gcd(ai,x)代替ai谁先不能操作谁先输掉比赛题解:第一反应nim游戏,gcd是取最大公约数,每个数我们都可以分解成一些质因子相乘的形式,例如:ai= x * y *z(x,y,z均为ai的质因子),然后一个人操作时选了xy,gcd(xy,ai)=xy,相当于将z取走了,其实也就是每次取走的时一个或多个质因子,那质因子的个数相当于是石头的数量,每次可以原创 2021-08-13 12:14:14 · 319 阅读 · 1 评论 -
Alice and Bob
Alice and Bob题意:两人博弈,每次一个人从一堆中拿k个,同时从另一堆拿k * s(s>=0)个,问谁先不能拿10000组数据,N<=5000题解:(x,y)表示第一堆石头数量为x,第二堆为y如果(x,y)是必败状态,那么通过取走石头一次直接形成(x,y)的(x1,y1)必然不是必败状态如果(x,y)不是必败状态,那(x1,y1)就不一定了可以通过反证去理解指向必败状态的是必胜状态,必胜状态可以指向必败,也可以指向必胜。必败状态无法到必败状态综上:我们只需要关注一个原创 2021-07-23 15:58:40 · 126 阅读 · 0 评论 -
Game of Cards Gym - 102822G
Game of Cards Gym - 102822G题意:小兔子和小马喜欢玩奇怪的纸牌游戏。现在,他们正在玩一种叫做0123游戏的纸牌游戏。桌子上有几张牌。其中c0标记为0,c1标记为1,c2标记为2,c3标记为3。小兔子和小马轮流玩游戏,小兔子先走。在每一回合中,玩家应选择两张牌,条件是两张牌上的数字之和不超过3,然后将这两张牌换成标有其和的牌。不能移动的玩家将输掉比赛。小兔子和小马在想谁会赢这场比赛c0, c1, c2, c3 (0 <= c0, c1, c2, c3 <= 1e9)原创 2021-07-11 16:48:35 · 300 阅读 · 0 评论 -
Acwing 236. 格鲁吉亚和鲍勃(博弈论妙题)
Acwing 236. 格鲁吉亚和鲍勃题意:一排网格,将网格从左到右依次编号 1,2,3,…,并将 N 个西洋棋棋子放在不同的网格上,如下图所示:两个人轮流移动棋子每次玩家选择一个棋子,并将其向左移动,但是不能越过任何其他西洋棋棋子或超过左边界。玩家可以自由选择棋子移动的步数,其限制是棋子必须至少移动一步,一个网格最多可以包含一个棋子。无法移动任何棋子的玩家将输掉游戏。1<=N<=1000每个棋子的位置不超过10000题解:看题目可知,每个棋子的位置不超过10000 ,说明原创 2021-07-11 15:40:26 · 255 阅读 · 0 评论 -
P1199 [NOIP2010 普及组] 三国游戏
P1199 [NOIP2010 普及组] 三国游戏题意:有n个武将,每两个武将之间都有默契值,你和电脑玩游戏,轮流选一个。轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。小涵想知道,如果计算机在一局游戏中始终坚持上面这个策略,那么自己有没有可能必胜?如果有,在所有可能的胜利结局中,自己那对用于比武的武将组合的默契值最大是多少?题解:其实很简单,如果我们选择了i,电脑就会把和i默契值最高的j原创 2021-07-11 15:14:12 · 373 阅读 · 0 评论 -
【AcWing 235. 魔法珠
【AcWing 235. 魔法珠题意:有n堆魔法珠,第i堆有ai个,两个人轮流进行以下操作:当轮到某人操作时,如果每堆中魔法珠的数量均为 1,那么他就输了。问谁赢谁输题解:经典博弈论问题注意本题中的操作方法为将p分为小于p的约数我们先求出p的约数(小于p),然后对于每个约数跑遍dfs求出sg,所有sg异或起来,因为题目说要消失一堆,所以消失哪一堆就异或哪一堆,记得再填回去(因为每次只消失一堆,其他还在)详细过程看代码代码:#include<bits/stdc++.h>#原创 2021-07-11 14:21:36 · 197 阅读 · 0 评论 -
【Acwing 219. 剪纸游戏】
【Acwing 219. 剪纸游戏】题意:给定一张 N×M 的矩形网格纸,两名玩家轮流行动。在每一次行动中,可以任选一张矩形网格纸,沿着某一行或某一列的格线,把它剪成两部分。首先剪出 1×1 的格纸的玩家获胜。两名玩家都采取最优策略行动,求先手是否能获胜。提示:开始时只有一张纸可以进行裁剪,随着游戏进行,纸张被裁剪成 2,3,… 更多张,可选择进行裁剪的纸张就会越来越多。题解:常规的博弈论做法,用记忆化搜索来求每个状态的后继状态的sg值,利用mex求出本状态的值本题与常规的博弈论不同点在于原创 2021-07-11 12:28:13 · 394 阅读 · 0 评论 -
P2575 高手过招
P2575 高手过招题意:AKN玩游戏玩累了,于是他开始和同伴下棋了,玩的是跳棋!对手是wwx!这两位上古神遇在一起下棋,使得棋局变得玄幻莫测,高手过招,必有一赢,他们都将用最佳策略下棋,现在给你一个n*20的棋盘,以及棋盘上有若干个棋子,问谁赢?akn先手!游戏规则是这样的:对于一个棋子,能将它向右移动一格,如果右边有棋子,则向右跳到第一个空格,如果右边没有空格,则不能移动这个棋子,如果所有棋子都不能移动,那么将输掉这场比赛。题解:注意题目意思,题目说的是每个棋子只能向右移动一格,也就是说棋盘原创 2021-07-11 12:05:53 · 199 阅读 · 0 评论 -
博弈论(基础概念+例题)
博弈论(b站视频)文章目录一些概念以Nim游戏为例Nim游戏介绍定义 必败/必胜局面必败/必胜局面的判定引理Nim游戏判定引理的等价命题有向图游戏对判定引理的数学描述-Sg函数有向图游戏的和题目:[有向图游戏][有向图游戏的和][构造/转化类]一些概念以Nim游戏为例Nim游戏介绍定义 必败/必胜局面P-position:先手必败N-position:先手必胜例如三堆式子的Nim游戏:必败/必胜局面的判定引理Nim游戏判定引理的等价命题为什么直接异或呢?(看图)有向图游戏原创 2021-07-11 11:54:42 · 367 阅读 · 2 评论 -
CF917B MADMAX
CF917B MADMAX题意:Alice和Bob有一个n个点m条边的DAG,每条边上有一个小写英文字母表示权值,Alice和Bob每人有一个棋子,每个人放在一个节点上(可以放在同一个节点上)。 第一轮Alice可以沿一条边把棋子移到一个相邻的节点上,之后Bob沿一条边移动棋子,以此类推,规则规定:每一次移动经过的边的ASCII码单调不降(即,若Alice沿’c’走了一步,Bob只能沿’c’或’c’之后的字母走,然后Alice又要沿Bob走过的字母之后的字母走…)。不能走的人输掉这盘游戏。 现在他们想知原创 2021-07-11 11:21:11 · 197 阅读 · 0 评论 -
P1288 取数游戏II
P1288 取数游戏II题意:一个环,由边权,硬币一开始在一个点上,两个人轮流操作,每次操作向左或右移动,每次移动必须将边权减少到非负整数,如果原本是0则不能走,当不能走动时,该方输掉比赛问先手是否右必胜策略题目保证至少有个边为0题解:构造SG函数:当前节点和0边之间的边数%2,奇数边sg=1为必胜局面,偶数条边sg=0为必败局面终局为必败局面必胜可以走到必败局面,奇->偶必败不能到必败局面,无法奇->奇有奇数条边则必胜,否则必败;怎么理解:对于一条链(环的问题一原创 2021-07-10 22:21:22 · 269 阅读 · 1 评论 -
P1290 欧几里德的游戏
P1290 欧几里德的游戏题意:给定两个正整数 M 和 N,从 Stan 开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数不能小于 0。然后是 Ollie进行同样的操作,直到一个人得到0,他就取得胜利题解:我们假设当前状态为(x,y),y>=x如果y是x的倍数,先手获胜。然后我们考虑其他情况:假设y = kx +b,b<x如果k>=2.说明当前状态可以转移到(x,y-(k-1)x)即(x,x+b),也就可以转移到(x,y-kx)即(x,b),而(x,x+b)原创 2021-07-10 21:50:54 · 290 阅读 · 1 评论 -
P1247 取火柴游戏
P1247 取火柴游戏题意:有n堆火柴,两个人轮流操作,每次只能在从一堆中取若干火柴,拿走最后一根火柴的为胜者,给你一个状态,问先手是赢是输题解:很经典的nim博弈,结论大家应该都知道就是全部堆数异或起来,为0则先手输,否则先手赢答案还要求输出第一次取的情况,所有异或后得到state,会存在一个i,使得a[i] ^ state < a[i],这里可以理解成从a[i]中取,取的数量就是state ^ a[i]洛谷某大佬的详细证明代码:#include<bits/stdc++.h&g原创 2021-07-10 21:22:40 · 324 阅读 · 0 评论