"题目链接" cpp //求三堆石子的SG函数,异或起来就是整个游戏的SG值 include include const int N=1005; int n,m,p,cnt,F[N],sg[N+2]; bool vis[N+2]; void Init() { F[0]=F[1]=1; for(cnt ...
分类:
其他好文 时间:
2018-02-25 11:27:57
阅读次数:
173
Description 小H和小Z正在玩一个取石子游戏。 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子, 每次取石子的个数有限制,谁不能取石子时就会输掉游戏。 小H先进行操作,他想问你他是否有必胜策略,如果有 ,第一步如何取石子。 小H和小Z正在玩一个取石子游戏。 取石子游戏的 ...
博弈论。 就是有一堆石子你拿走一堆中的一个,然后再向后面两堆中加两个问胜负 i<j<=k 所以我们可以直接通过sg函数计算,考虑问题的奇偶性,如果这一位是奇的我们才考虑,偶的可以模仿 然后对所有sg异或一下,找到三个数异或起来能使当前先手必败即可。 By:大奕哥 ...
分类:
其他好文 时间:
2018-02-09 22:19:37
阅读次数:
128
暴力求SG函数即可,记忆化贼方便 / program from Wolfycz / include include include include include define inf 0x7f7f7f7f using namespace std; typedef long long ll; typ ...
分类:
移动开发 时间:
2018-02-09 15:20:10
阅读次数:
227
网上的博弈博客和论文有很多,但是有些没有详细的证明,仅仅是给出了结论。今天作者将一些常见的博弈论模板集中起来,给大家介绍一下博弈论中一些单一游戏的决策和常见的Nim模板与证明。 注:下列游戏都建立在双方都有最优策略的情况下,若未加以说明,则每人每次至少取一个石子。 例1:取石子游戏之一 有两个游戏者 ...
分类:
编程语言 时间:
2018-02-08 13:42:56
阅读次数:
222
参考题集就好了 <!--StartFragment --> http://url.cn/5qNJibq 基本博弈 1,巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 必胜条件: n=(m+1)r+s 2,威佐夫博弈(Wy ...
分类:
其他好文 时间:
2018-02-06 20:17:11
阅读次数:
477
vjudge上的UVA题面都不好复制。。。 首先可以发现,每次操作可以从任意堆取一颗石子(除了最后一堆),然后把这颗石子变成两个然后放到这堆后面的任意两堆里去。 而且每次操作最多可以取一个石子。 这样我们就把每个石子看成一个子游戏,位置在i的堆的每个石子看成一个石子数为n-i的堆。 然后再搞一搞sg ...
分类:
其他好文 时间:
2018-02-05 21:53:11
阅读次数:
104
http://poj.org/problem?id=3533 变成三维的nim积。。前面那个二维的函数都不用改多nim积一次就过了。。。longlong似乎不必要但是还是加上了 代码 1 #include<cstdio> 2 #include<cstring> 3 #include<algorith ...
分类:
其他好文 时间:
2018-01-24 12:28:22
阅读次数:
176
http://172.20.6.3/Problem_Show.asp?id=1540 之前莫比乌斯反演也写了一道这种找规律分块计算的题,没觉得这么恶心啊。 具体解释看代码。 翻硬币的具体方法就是分别算出每个单个正面朝上的情况的sg函数然后异或。 1 #include<cstdio> 2 #inclu ...
分类:
其他好文 时间:
2018-01-23 13:07:12
阅读次数:
120
(蓝书里有这个题貌似) 一言不合就打表,可以发现sg数组是个分形的,所以可以推出递推式: 1.x是偶数时,sg(x)=x/2 2.否则,sg(x)=sg(x/2) ...
分类:
其他好文 时间:
2018-01-22 19:16:30
阅读次数:
103