昨天看大白书翻到了组合游戏这章,看着发觉原来是博弈论的内容,于是便看下去了。真是不看不知道,一看才知道自己的水平有多弱,不过好在还是集中精神地看了大部分。从Nim游戏(n堆石子,每人每次可以从任意一堆中取至少1个、至多整堆的石子,不能取者为输)开始讲起,引入必胜态、必败态的概念—— 1. 一...
分类:
其他好文 时间:
2014-10-04 01:29:05
阅读次数:
372
题意:n堆石头,每堆石头个数:s[1]...s[n]。每人每次可以选择在一堆中取若干个(不能不取),或者把一堆石头分成两堆(两堆要都有石头)。无法操作者负。数据范围:(1 ≤ N ≤ 10^6, 1 ≤ S[i] ≤ 2^31 - 1)思路:S[i]太大了,直接求SG铁定TLE,所以先把SG打出来看...
分类:
其他好文 时间:
2014-10-03 22:35:55
阅读次数:
227
题意:N个棋子,位置分别是p[1]...p[N]。Georgia和Bob轮流,每人每次可选择其中一个棋子向左移动若干个位置(不能超过前一个棋子,不能超出最左边【位置1】且不能不移)Georgia先手,问谁赢。思路:将棋子按位置从右到左两个两个作为一对。若棋子总个数是奇数,将第一个棋子和【位置0】作为...
分类:
其他好文 时间:
2014-10-02 22:24:33
阅读次数:
170
题意:m堆石头,每堆石头个数:a[1]....a[m]。每次只能在一堆里取,至少取一个。最后没石子取者负。先取者负输出NO,先取胜胜输出YES,然后输出先取者第1次取子的所有方法。如果从有a个石子的堆中取若干个后剩下b个后会胜就输出a b思路:裸的NIM。单看一堆石子,没有石头sg[0]=0,一个石...
分类:
其他好文 时间:
2014-10-01 22:35:21
阅读次数:
216
题目大意:两个小人在树上玩Nim游戏,问有没有必胜策略。
思路:尼姆游戏:如果所有石子的异或值为0就是必败局面。异或有如下性质:x ^ y ^ z = x ^ (y ^ z),所以就可以进行树链剖分了。题目中还好心提醒有30%的点会使dfs爆栈。。第一次写不用dfs的树链剖分,扒的别人的代码,有些丑陋。
CODE:
#include
#include
#inclu...
分类:
其他好文 时间:
2014-09-28 10:35:41
阅读次数:
167
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1848这个题目代码不是很复杂,但那个等价类,(SG函数)没怎么理解,题目难,不过代码不怎么复杂,在网上找了一些解释,博弈题,一开始好难理解。还是用到了那个定理对于nim游戏的某个位置(x1,x2,x3),当...
分类:
其他好文 时间:
2014-09-24 20:26:07
阅读次数:
315
题目链接point this这一题有点类似于NIM游戏,当符合一定条件的时候,先手可必胜。这里用到了一个规律。把每一堆的数目进行异或运算(每一堆的数目都是1除外),最后的结果有两种,为0或不为0,若为0则各堆的二进制位相加不进位以后所得到的数的各位数一定是一个偶数。我们称结果为0的情况为平衡状态,如...
分类:
其他好文 时间:
2014-09-23 22:44:05
阅读次数:
206
n堆石子,两个人轮流取,每次可以在一堆石子中取至少一个石子,并可以选择将剩下的石子分成任意的两堆,最后取走的获胜,问谁会获胜。比裸nim多了一个条件就是可以将剩下的石子分开,原来是1的位拆分后变成一个1和一个0,原来是0的拆分后变成1和1或者0和0,都不改变nim的必胜或必败状态,所以直接异或。#i...
分类:
其他好文 时间:
2014-09-23 20:02:15
阅读次数:
162
排成一条直线的格子上有n个棋子,两个人每个人每次可以选择一枚棋子向左移动任意步数,但是不可以越过棋子,无法进行操作的一方失败,问谁会失败。先考虑偶数个棋子时的情况,将棋子从左到右两两配对,转化成n/2堆石子,每堆石子的个数为中间的空格数,这样每次向左移动可以看做在一堆石子中取了任意个,转换成了nim...
分类:
其他好文 时间:
2014-09-23 18:44:34
阅读次数:
182
题目大意:
传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同)。两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿。拿走最后一根火柴的游戏者胜利。
本题的游戏稍微有些不同:在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿,但不可以全部拿走。第二回合也一样,第二个游戏者...
分类:
其他好文 时间:
2014-09-22 17:31:44
阅读次数:
214