博弈&组合游戏
文章平均质量分 66
thy_asdf
我也不知道说什么...
展开
-
Codeforces 305E Playing with String
传送门:http://codeforces.com/problemset/problem/305/E思路:首先每个字符都可选的子串可以看成一个独立的游戏,那么最终的答案就可以通过所有独立游戏的SG值的异或和得到。代码:#include#include#includeconst int n=5010;using namespace std;int sg[n];char原创 2015-08-05 17:38:16 · 804 阅读 · 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 · 908 阅读 · 0 评论 -
bzoj1188: [HNOI2007]分裂游戏
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1188思路:这题比较特殊,每个豆子是一个独立的游戏,SG的下标是豆子所处的位置。知道了这一点就很好做了。首先对于一个位置的两个豆子,一个人走一步,另一个人也可以走这一步,所以就抵消了从SG函数的角度理解,这两个豆子的SG值相同,最后反正会被异或掉。所以豆子数等于a[原创 2015-08-06 17:11:30 · 1666 阅读 · 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 · 578 阅读 · 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 · 809 阅读 · 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 · 1130 阅读 · 1 评论