博弈&组合游戏
文章平均质量分 66
thy_asdf
我也不知道说什么...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces 305E Playing with String
传送门:http://codeforces.com/problemset/problem/305/E 思路:首先每个字符都可选的子串可以看成一个独立的游戏,那么最终的答案就可以通过所有独立游戏的SG值的异或和得到。 代码: #include #include #include const int n=5010; using namespace std; int sg[n];char原创 2015-08-05 17:38:16 · 843 阅读 · 0 评论 -
bzoj1115: [POI2009]石子游戏Kam
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1115 思路:首先差分,求出相邻两堆石子的个数之差,要求单调不降就是差分数组大于等于0。 然后我们考虑在第i堆移走j个,就等价于i+1与i的差扩大j,i与i-1的差缩小j。 这样就转化为另一个经典的游戏模型,阶梯NIM。 有n个阶梯,每个阶梯上都有一定数量的石子,每次都可以移任原创 2015-08-06 14:43:37 · 954 阅读 · 0 评论 -
bzoj1188: [HNOI2007]分裂游戏
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1188 思路:这题比较特殊,每个豆子是一个独立的游戏,SG的下标是豆子所处的位置。 知道了这一点就很好做了。 首先对于一个位置的两个豆子,一个人走一步,另一个人也可以走这一步,所以就抵消了 从SG函数的角度理解,这两个豆子的SG值相同,最后反正会被异或掉。 所以豆子数等于a[原创 2015-08-06 17:11:30 · 1715 阅读 · 0 评论 -
Codeforces 168D Wizards and Huge Prize
传送门:http://codeforces.com/problemset/problem/168/d 思路:这题比较恶心,细节很多,不过还好cf可以看数据... 首先考虑一个弱化版,只会横着或竖着以及横着和竖着一起来。 我们可以发现,一次操作后就相当于把一个大的游戏分成1或2或4个独立小游戏 SG值与位置也有关系,所以SG[u][d][l][r]表示左上坐标为(u,d)右下坐标为(l,r)原创 2015-08-06 17:48:17 · 628 阅读 · 0 评论 -
bzoj2066: [Poi2004]Gra
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2066 思路:首先谁移到m-1谁就输了,这是多么显然啊.... 其实这个可以转化为上一篇中的阶梯NIM。 连续的一堆就是一个阶梯上的石子,两个连续的一堆间隔的空阶梯数是空格数-1(这点一定要注意) 然后考虑对于连续的一堆棋子,如果我们从中间移走一个,使之变为数量为x和y的两段,原创 2015-08-06 16:06:23 · 837 阅读 · 0 评论 -
bzoj3576: [Hnoi2014]江南乐
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3576 思路:每堆石子都构成一个独立的游戏,所以SG[x]就表示只有一堆数量为x的石子的游戏的SG值,显然当x 然后我们枚举每种分法,可以得到所有的SG值。但是这是O(n^2),TLE.... 为了降低复杂度,我们发现了一个很神奇的性质 n除以m最多只有O(根号n)个不同的值。原创 2015-08-06 16:52:21 · 1219 阅读 · 1 评论
分享