博奕
呆呆的人v
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 2147 kiki's game(博奕)
题意:在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是:左移一,下移一,左下移一。然后kiki每次先走,判断kiki时候会赢(对方无路可走的时候)。思路:定义状态 P为必败点,N为必胜点。有以下结论(1):最终态都是P(2):按照游戏规则,到达P态都是N的话(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N于是可得如下图:2147 kiki's gam原创 2013-04-23 09:28:49 · 526 阅读 · 0 评论 -
poj 2960 S-Nim(博奕)
题意:跟前一道 Fibonacci again andagain 差不多,对每种S只能取固定的数,下面有m组测试数据,每组开始一个l表明有多少个数,接着输入l个hi,对于每组问先手是赢是输。思路:一样的求SG函数,注意两点,第一,给出S所能取的数不一定是从小到大的,所以得排序;第二,按普通的求SG函数方法,会超时,无耐看也别人的方法才知道得用递归求SG。还有一点不明白,他们为什么都把SG原创 2013-04-23 09:28:57 · 552 阅读 · 0 评论 -
hdu 1848 Fibonacci&nbs…
思路:SG函数的应用,可取的值为不连续的固定值,可用GetSG求出SG,然后三堆数异或。//0MS 240K#include#includeconst int M = 1005;int Fibs[M],SG[M],hash[M];void Fib(){ Fibs[1] =1; Fibs[2] =2; for (int i =3;Fibs[i]原创 2013-04-23 09:28:53 · 559 阅读 · 0 评论 -
poj 1704 Georgia and Bob(博奕)
题意:Georgia and Bob玩游戏,在一条形格子中有N个棋子,他们可以选择任意棋子,往左移到不超过其它棋子和最左边的任意步数。谁不能走谁输。思路:跟Nim很像,把两个棋子的距离看成一堆石子,因为如果你把左边的棋子移动任意步数,右边的棋子跟着移动相同步数就会抵消(例 2 33 等同于 2),这样就转换成Nim游戏了。//176K 16MS#include#includ原创 2013-04-23 09:28:59 · 591 阅读 · 0 评论 -
SG函数模板
/*计算从1-n范围内的SG值。Array(存储可以走的步数,Array[0]表示可以有多少种走法)Array[]需要从小到大排序1.可选步数为1-m的连续整数,直接取模即可,SG(x) = x % (m+1);2.可选步数为任意步,SG(x) = x;3.可选步数为一系列不连续的数,用GetSG(计算)*/int SG[MAX], hash[MAX];void GetSG(原创 2013-04-23 09:28:51 · 503 阅读 · 0 评论
分享