这篇虽然是转载的,但代码和原文还是有出入,我认为我的代码更好些。 转载自:http://www.cnblogs.com/frog112111/p/3199780.html 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如me ...
分类:
其他好文 时间:
2016-08-08 22:20:40
阅读次数:
227
新的一周了诶.. 8.8 做cf 看了一天博弈于是B想得好复杂..一直算 sg算不对.. c 是不懂要怎么处理 前 t 秒里面 没有被 2 操作 操作掉的数 cf 366 div2 c C - Thor 给每个节点 一个队列,队列里面存放的就是 对应它添加进来的时间, 在 3 操作 的时候,可以维护 ...
分类:
其他好文 时间:
2016-08-08 06:34:40
阅读次数:
135
理解:sg函数,sg函数是博弈中表示当前状态的函数,具体的体现就是sg【】数组存的状态0为必败(或必胜看题意),非零即为相反的状态; 因为是博弈,并采取最优策略,所以,当自己处于必胜态时,一定会把对手逼到必败态,对手无奈只能从给你必胜态,所以必胜态和必败态必然相连,只是先后手交替,才有了必 胜策略, ...
分类:
其他好文 时间:
2016-08-07 15:19:39
阅读次数:
222
UVALive-7278 - Game of Cards
题目大意:A、B两个人玩游戏。A先手,问最后谁赢。游戏规则:
给出n堆纸牌,可任意选择其中一堆,记为x
在x的顶部可取走[0,k]张纸牌,该堆纸牌至少留下一张
x剩下来的纸牌中,记顶部的纸牌值为y,则移除最顶部的y张纸牌(即该堆至少还剩下y张纸牌才是合法)
如果有人不能进行合法移动,则输了。
题目思路:主要是写SG函数,每一堆的sg函数都不同...
分类:
其他好文 时间:
2016-08-06 19:13:54
阅读次数:
118
题意概括:你已经赢得两局,最后一局是N个棋子往后移动,最后一个无法移动的玩家失败。 题目分析:有向无环图sg值游戏,尼姆游戏的抽象表达。得到每个棋子的sg值之后,把他们异或起来,考察异或值是否为0. 1 #include "cstdio" 2 int figure[1004][1004]; 3 in ...
分类:
其他好文 时间:
2016-08-06 19:02:21
阅读次数:
96
题意: n堆石子,先拿光就赢,操作分为两种: 1.任意一堆中拿走任意颗石子 2.将任意一堆分成三小堆 ( 每堆至少一颗 ) 分析: 答案为每一堆的SG函数值异或和. 故先打表寻找单堆SG函数规律. 其中,若 x 可分为 三堆 a,b,c ,则 SG[x] 可转移至子状态 SG[a] ^ SG[b] ...
分类:
其他好文 时间:
2016-08-06 14:14:02
阅读次数:
149
http://acm.hdu.edu.cn/showproblem.php?pid=5795 可以进行一堆分三堆操作的nim多堆问题 nim问题说到底也是sg函数的问题,sg函数求的是当前状态所无法到达的最小状态,这个状态本质是由自己编号的,一般情况下根据石子数目编号,但是不可以采用不同的两套标准。 ...
分类:
其他好文 时间:
2016-08-06 12:42:12
阅读次数:
114
官方题解: A Simple Nim sg[0]=0 当x=8k+7时sg[x]=8k+8, 当x=8k+8时sg[x]=8k+7, 其余时候sg[x]=x;(k>=0) 打表找规律可得,数学归纳法可证。 具体的打表放在了代码里面 ,详见init函数 ...
分类:
其他好文 时间:
2016-08-05 17:43:52
阅读次数:
157
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795 题意:一个n堆的取石子游戏,每次可以取一堆中的任意个,或者将当前堆分为三个非空堆。求先手/后手必胜。 思路:打表sg函数找规律。 ...
分类:
其他好文 时间:
2016-08-05 15:50:44
阅读次数:
195
Nim or not Nim?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1710 Accepted Submission(s): 845
Problem Description
Nim is a two-...
分类:
其他好文 时间:
2016-08-05 06:39:59
阅读次数:
141