随笔分类 - 博弈论
摘要:nim游戏: n堆石子,操作为可以从任意一堆拿走任意正整数个石子,不能操作者输。问先手胜还是后手胜。 结论: 当n堆石子的个数的亦或为0时,先手必败;否则先手必胜。 证明: 1,若亦或值不为0,则一定可以通过一步操作让它变成0. 考虑亦或值最高位的那个1,一定有一堆石子数在那一位是1(否则总的亦或里
阅读全文
摘要:题链:https://www.luogu.org/problemnew/show/P1488 题解: 容易发现当黑色三角形在最外面的时候先手胜。 那么接下来考虑黑色三角在里面的情况。因为双方都会尽力避免让黑色三角露在外面,所以必败态为两个白色三角夹着一个黑色三角。又因为每次双方都只能取一个,所以当(
阅读全文
摘要:题目链接:http://codeforces.com/gym/100952/problem/G 题意: 刚开始双方面前有 [1-n] n个数,游戏规则为双方每轮说出一个数m,则拿掉序列中所有m的因子,拿掉最后一个数的一方输。(每轮说出的数m必须满足剩余序列中至少有一个数是它的因子) 题解: 当n为1
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 题意: 一个n*n的棋盘(n<=20),在某两个位置上分别有一个白棋和一个黑棋。先手只能移动白棋,后手只能移动黑棋。白棋的移动规则为只能往上下左右某个方向移动一格,黑棋的移动规则为可以
阅读全文
摘要:题意: 一个n*m的棋盘,左下角有一颗星星。操作者可以选择向上、向右、或向右上移动一格,不能移出棋盘。不能移动者输。问先手胜还是后手胜。 题解: 可以发现最上面一行最右边是必败态,且该行胜败态交叉分布。那么第二行就全是必胜态,第三行最右是必败态,往左必胜必败态交叉分布... ... 所以可以总结出规
阅读全文
摘要:题目链接:https://loj.ac/problem/524 题意: 一开始有一个长度为n的序列,其中有的数是已知的(这些已知数两两不同),有些数是待填写的。操作为任选一个代填写位置填写一个未在序列中出现过的实数。无法填写时游戏结束。当游戏结束后若逆序对数目为奇数,则先手胜,否则后手胜。 题解:
阅读全文
摘要:题意: 一堆n个石子,先手可以取任意个但不能取完,之后每个人不能取超过前一个人所取石子数的2倍(最少要取一个)。问谁会赢。 结论: 当n为斐波那契数列中的数时,后手胜,否则先手胜。 对证明感兴趣的同学可以看一下这篇博客,博主讲得挺好:http://blog.csdn.net/dgq8211/arti
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P3185 题解: 首先这道题第一眼望过去好像不是很简单qwq,那么我们先尝试看能不能发现一些特殊性质。 我们先从后手相消的原则去看,则可以发现若一个瓶子中有偶数个的话,那么这个瓶子是没有意义的。因为后手可以完全复
阅读全文
摘要:题意: n枚硬币排成一个环,操作为可以选择一个或相邻的两个取走(相邻指的是最开始相邻,即不会自动补成环)。问先手胜还是后手胜。 题解: 首先我们考虑1和2,则明显是先手必胜。 如果大于等于3,那么先手取后一定是一条链。这时我们一定可以把这一条链变成两条相等的链。(如果链长是奇数就取掉最中间的那个,否
阅读全文
摘要:题意: 给你两堆石子,有两种操作:1,在某一堆取x个(x>=1个);2,在两堆同时取x个(x>=1)。 给你初始两堆石子数,问先手胜还是后手胜。 题解: 其实这是著名的威佐夫博弈,有个结论是假设两堆石子为(a,b)(a<=b),那么如果满足{a == floor(0.5*(sqrt(5)+1)*(b
阅读全文
摘要:题意: n个数字排成一列,每个人只能选择最左边或最右边的数字取掉,自己该回合的得分就是该数字的值。 当两个人都选择最优决策时,问两个人各能得到多少分。 题解: 博弈论的外表,实质则是记忆化搜索 (不过知道博弈论原理的话应该更好想吧) #include<iostream> #include<cstdi
阅读全文
摘要:题意: 一个n*n的棋盘,一开始在左上角有一枚棋子,操作为可以上下左右移动一格,不能移出棋盘且不能移动到之前走过的格子。问先手胜还是后手胜 https://www.luogu.org/problemnew/show/P4136 题解: 假如n是偶数,我们可以把所有格子划分成1*2的块。那么先手只要将
阅读全文
摘要:题意: 给你一个数n(n<=1e6),玩家可以进行的操作为减去该数最大数码或最小非零数码。即数2014可以减去1变成2013或减去4变成2010。将数变成0的一方赢。 题解: 直接求出1-1e6的SG函数值即可。复杂度O(n*lgn)(这里的log以10为底)。 #include<iostream>
阅读全文
摘要:题意: 给你n组石子,每组有两摞。操作为选其中一摞石子分成两摞,抛弃原来同一组的另一摞石子,直到无法操作。问给你这n组石子,问先手胜还是后手胜。 (比如(10,8,),你可以将10分为(5,5),那么这一组石子就成了(5,5),那个8就可以不用管了) 题目链接:https://www.luogu.o
阅读全文
摘要:由于明天开学,不一定有时间写博客,故今天一次写两道题qaq q1: 题意: 一堆n个石子,可以取1,2,3...m个,双方轮流取,给你n和m,问先手胜还是后手胜 题解: 易得当n%(m+1)==0时后手必胜,否则先手胜。假如对方取x个,你就取(m+1-x)个,使得对手面对的数一直是(m+1)的倍数,
阅读全文
摘要:https://www.luogu.org/problemnew/show/P3150 题目大意: 两个人在玩游戏,一开始有一个数x,先手方把他拆分成两个数a和b,使得(a+b==x,a>0,b>0),然后后手方选择其中一个数按之前规则拆分,另一个数就被丢掉,然后先手方再从两个数中选择一个... .
阅读全文
摘要:题目大意: 给你一个n行20列的棋盘,上面有一些棋子 每个棋子只能往右边第一个空格处移动,无棋子可移动即判定为输 现在给你棋盘大小和棋子分布,问先手是否必胜 题解: 可以看出每行是独立的,也就是说只要求出每行的SG函数值,在亦或一下就可以了(SG定理^_^) 又由于每行长度一样,所以可以预处理每个状
阅读全文

浙公网安备 33010602011771号