摘要: 题意:n堆石头,每堆石头个数:s[1]...s[n]。每人每次可以选择在一堆中取若干个(不能不取),或者把一堆石头分成两堆(两堆要都有石头)。无法操作者负。数据范围:(1 ≤ N ≤ 10^6, 1 ≤ S[i] ≤ 2^31 - 1)思路:S[i]太大了,直接求SG铁定TLE,所以先把SG打出来看... 阅读全文
posted @ 2014-10-03 20:35 fish7 阅读(168) 评论(0) 推荐(0)
摘要: 题意:一排石头,个数是K。有n个数,a1...an。每人每次取石子只能取连续的x个。x属于a1...an的一个。没法取者负。思路:简单的SG。但是TLE!后面加了一个优化~这个优化不好想到吧,看了别人的代码才发现的。就是把a1...an中重复的去掉!。。。直接看代码。代码:int sg[1005];... 阅读全文
posted @ 2014-10-03 20:28 fish7 阅读(293) 评论(0) 推荐(0)
摘要: 题意:3堆石头,个数分别是m,n,p。两个轮流走,每走一步可以选择任意一堆石子,然后取走f个。f只能是菲波那契中的数(即1,2,3,5,8.....)取光所有石子的人胜。判断先手胜还是后手胜。思路:简单SG。看代码。代码:int sg[1005];int dfs(int x){ if(sg[x... 阅读全文
posted @ 2014-10-03 20:23 fish7 阅读(146) 评论(0) 推荐(0)
摘要: 题意:有一张W*H的纸片。每人每次可以横着撕或者竖着撕,先撕出1*1那一方胜。数据范围:W and H (2 <= W, H <= 200)思路:很好抽象出游戏图的模型,用SG解决。直接看代码。代码:int dp[maxn][maxn];int sg(int w,int h){ if(dp[w... 阅读全文
posted @ 2014-10-03 16:05 fish7 阅读(160) 评论(0) 推荐(0)
摘要: 题意:给一个由N个点组成的一张有向图,不存在环。点的编号是0~N-1。然后给出M个棋子所在的位置(点的编号)【一个点上可同时有多个棋子】。每人每次可移动M个棋子中的一个棋子一步,移动方向是有向边指向的方向。最后无法移动棋子的人输。思路:一眼就可看出的裸的SG,直接看代码吧。代码:int sg[100... 阅读全文
posted @ 2014-10-03 10:58 fish7 阅读(173) 评论(0) 推荐(0)
摘要: 题意:1 ×n 个格子,每人每次选一个格子打上叉(不得重复),如果一个人画完叉后出现了连续的三个叉,则此人胜。给n,判断先手胜还是先手败。思路:假设选择画叉的位置是i,则对方只能在前[1,i-3]中或[i+3,n]中选择画叉。子问题出现。根据SG的定义,即可求出SG(N)。看代码。代码:int sg... 阅读全文
posted @ 2014-10-03 02:41 fish7 阅读(141) 评论(0) 推荐(0)
摘要: 题意:K个数,s1...sk。m个状态,对于某一个状态,有L堆石子,每人每次取的石子个数只能是s1...sk的一个,且只能在一堆中取。输出m个状态是先手胜还是先手败,先手胜输出W,否则输出L。输入格式及数据范围:For each test case: The first line contains ... 阅读全文
posted @ 2014-10-03 01:35 fish7 阅读(170) 评论(0) 推荐(0)