组合游戏的和通常是很复杂的,所以我们介绍一种新工具,可以使组合问题变得简单————SG函数和SG定理。
Sprague-Grundy定理(SG定理):
游戏和的SG函数等于各个游戏SG函数的Nim和。这样就可以将每一个子游戏分而治之,从而简化了问题。而Bouton定理就是Sprague-Grundy定理在Nim游戏中的直接应用,因为单堆的Nim游戏 SG函数满足 SG(x) =...
分类:
其他好文 时间:
2015-05-07 10:36:37
阅读次数:
136
题意:
跟经典的nim除了胜利条件不一样(nim当游戏者面对空的决策集判负,anti-SG当游戏者面对空的决策集判负),其他都一样。
分析:
设全局状态为s,单个游戏为t。先手必胜条件:(g(s)!=0&&Existg(t)>1)||(g(s)==0&&Anyg(t)
代码:
//poj 3480
//sep9
#include
using namespace std;
int ma...
分类:
其他好文 时间:
2015-04-09 19:51:38
阅读次数:
213
HDU 1847 Good Luck in CET-4 Everybody!(SG的简单运用)...
分类:
其他好文 时间:
2015-02-04 20:27:53
阅读次数:
148
Calendar Game
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2833 Accepted Submission(s): 1636
Problem Description
Adam and Eve...
分类:
其他好文 时间:
2015-01-29 09:29:40
阅读次数:
168
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42654067
其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。
题意:有个一维棋盘,两人轮流下棋,然后谁连成三个谁赢。
题解:
我们考虑到一个长度为n的棋盘,在i处下子,相当于把游戏转化成两个游戏GAME(x-i-2)和GAME(i-3)。
原因:左边...
分类:
其他好文 时间:
2015-01-13 09:04:14
阅读次数:
132
题意:n堆石子,每次可以从某堆中拿走若干,也可以把此堆分成两个非空堆,谁无法操作了谁输。
题解:首先我们可以打个SG函数来暴力出解,但是显然这会T。
但是不要害怕,我们打完以后发现了一个貌似对的规律:
对于所有的k >= 0,有 sg( 4k+1 ) = 4k+1; sg(
4k+2 ) = 4k+2; sg( 4k+3 ) = 4k+4; sg( 4k+4 ) = 4k+3。...
分类:
其他好文 时间:
2015-01-13 09:03:56
阅读次数:
199
题意:David 玩一个石子游戏。游戏中,有n堆石子,被编号为0..n-1。两名玩家轮流取石子。 每一轮游戏,每名玩家选取3堆石子i,j,k(i
解法:看上去是将石子都往右移,直到所有都到了n-1堆不能移为止。首先是考虑每堆石子其实是独立的一个子游戏,堆与堆之间不相互影响。然后就是个数是偶数的对不会影响必胜必败态,必败态无法通过移动偶数堆得石子来扭转局面,因为必胜者只需对称操作即可。所以每堆石子...
分类:
其他好文 时间:
2014-11-02 18:14:50
阅读次数:
224
题目地址:HDU 2897
本来这题可以用NP状态转换,但是数据太大,所以可以通过打表sg函数值,来找出规律。感觉sg函数打表就是利用的NP状态转换的那两条规则。
通过打表可以发现,从1开始,连续p个0,然后接着连续q个正整数,然后再连续p个0,接着连续q个正整数,就这样循环下去。所以规律就很明显了。
代码如下:
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-09-16 20:39:51
阅读次数:
196
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666题意:给一个有向图,然后A和B轮流移动棋子,棋子在每一个位置可以重叠,当某人不能走时,输!问A和B谁赢方法:显然每一局游戏都是独立的,对每一局游戏异或即可每一局游戏...
分类:
其他好文 时间:
2014-08-26 22:55:36
阅读次数:
359