![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈论
发型睡姿决定
越努力,越幸运
展开
-
F - Crazy Calendar(网格中移石子,奇数nim)
题意:r*c方格中,每个格子有一定石子,每次移动每格任意数量石子,只能向下或者向右动一格,不能移动为败思路:显然是Nim,到右下曼哈顿距离为偶数的不用管,因为先手动一下后手动一下最后移到右下后还是先手的回合;奇数移动一格必到偶数格,所以奇数的Nim一下。很简单的入门题。#include<set>#include<map>#include<stack>...原创 2019-08-19 08:08:37 · 88 阅读 · 0 评论 -
G - Partitioning Game(石子不平均分堆,谁不能分谁输(sg函数打表子状态处理再异或))
题目意思:给你n堆石子,每堆有ai个石子,每次操作可以将一堆分成数量不相同的两堆(石子数量不能为0),谁没法分就输了,问你谁能赢。解题思路:用sg打表来做,假设有一堆石子数量为x的石子堆,那么他的后继状态就有(1, x - 1)、(2, x - 2)…等等(不能让两个数相等)想要计算出x的sg值就需要其后继状态的sg值,那么(1,x - 1)的sg值怎么求呢?毕竟他是一个二元组,不是简...原创 2019-08-16 17:04:54 · 240 阅读 · 0 评论 -
B - Incredible Chess(简单博弈升级版,运用nim)
题意:给两种黑白棋子,每一列均只有两种棋子各一枚,且棋子只能上下移动,谁最后无路可走谁输。思路:同上一题一样需要计算每一列中黑白棋子之间相差的格子数,因为本题可以两个方向移动,所以不能单纯将格子加起来去模2,需要用到尼姆博弈的思想将每列格子数异或起来,如果是0先手必败(白子先行)否则先手胜。#include <iostream>#include <algorithm&g...原创 2019-08-16 15:47:35 · 124 阅读 · 0 评论 -
C - Left Right(灰右白左简单博弈)
题意:给出黑白两种棋子,以及位置,灰色棋子只能往右走白色棋子只能往左走,谁最后无路可走谁输。思路:理解题意,将每一对黑白棋子之间的空格数求出来求和,然后对2取模,余数为0先手必败,否则先手胜。具体看代码#include <iostream>#include <algorithm>#include <cmath>#include <ctype....原创 2019-08-16 15:32:28 · 308 阅读 · 0 评论 -
H - Being a Good Boy in Spring Festival(先手胜第一步的方案数)
题目中文的很好理解,主要是明白怎么找到那个方案数,直接上代码看得明白。#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#include <cstdio>#include <...原创 2019-08-16 15:23:46 · 124 阅读 · 0 评论 -
E - Misere Nim(反nim博弈,最后一手拿石子的输)
思路:一般的nim博弈大家都会吧,一般的就是取最后一枚石子的人赢;先讨论 n 堆石子全部为1的情况:当 n 为奇数时,先手一定输,后手一定赢当 n 为偶数时,先手一定赢,后手一定输;当 n堆 不全部为1的情况:我们先看一般的nim博弈的必胜态:当前状态为必胜态,先手经最优策略 取过后,就到达必败态也就是平衡态,平衡态只能转移到不平衡态(必胜态),不平衡态经过 某一个途径 可以 转移...原创 2019-08-16 14:37:42 · 645 阅读 · 0 评论 -
D - Matrix Game(尼姆博弈模板题,最后不能拿石头的玩家输)
思路:把每一行的石子数加在一块,在进行异或操作,异或值为0先手必败。(尼莫博弈模板题)#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#include <cstdio>#inc...原创 2019-08-16 14:24:56 · 187 阅读 · 0 评论 -
K - 取石子游戏(斐波那契博弈模板题)
斐波那契博弈模板题,常规做法见代码:#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#include <cstdio>#include <sstream>#incl...原创 2019-08-16 14:19:28 · 118 阅读 · 0 评论 -
博弈论基本类别
.巴什博弈1、问题模型:有一个堆物品,物品数量为n个,两个人轮流从这堆物品中取物品,规定每次至少取一个,最多取m个,最后取光者得胜。2、解决思路:当n=m+1时,由于一次最多只能取m个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜,所以当一方面对的局势是n%(m+1)=0时,其面临的是必败的局势。所以当n=(m+1)*r+s,(r为任意自然数,s≤m)时,如果先取者要拿走...原创 2019-08-16 14:16:03 · 140 阅读 · 0 评论 -
J - Paint Chain HDU—3980(有环问题博弈,特判sg函数打表子状态)
题意:有n个珠子,每次必须涂色m个连续的。这 n个珠子是个环。询问胜负情况思路:对于是个环的情况,我们可以首先拿出一组m,如果n<m,先手必输。否则的话跑sg函数,注意此时sg函数跑的是后手的sg情况。这样环就转变为了链结构,对于一条链,sg[ i<m]=0, sg[m]=1, 每一个sg情况等于子问题的异或。因此转变为了 对于i>m的情况下, 如果从中拿出m个连...原创 2019-08-16 20:42:03 · 211 阅读 · 0 评论