上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 27 下一页
摘要: 刚开始这不知道思路,后来还是看了别人的解题报告才弄出来;集体思路:当前的箱子容量为si,那么要赢就要满足t + t*t < si现在箱子本来有ci:ci> t 则必胜;ci == t 则必败;ci < t不能断定输赢,那么就要继续调用SG函数;如果 ci > t SG值就是ci - t;因为剩下的容量只有这么大了;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include< 阅读全文
posted @ 2012-04-22 21:02 wutaoKeen 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 这是一道赤裸裸的SG函数的题目;View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 int f[20]={1,1},sg[1024]; 8 void GetFa( ) 9 {10 for( int i = 2 ; i < 20 ; i ++ )11 {12 f[i] = f[i -1] + f[i - 2]; 13 阅读全文
posted @ 2012-04-21 20:15 wutaoKeen 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 这是一道典型的SG函数题;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #include<vector>10 using namespace std;11 int s[124],sg[10024],n;12 int 阅读全文
posted @ 2012-04-21 16:33 wutaoKeen 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 只是一道取石子游戏的变形题,刚开始我想着去打表,一直打不出后来画图就一下子清楚了;我们来分析只有一行的情况:我们知道只要黑白棋子之间有空格,只要谁先走就一定谁赢,因为先走者一定会走到与两个棋子之间没有空格的地方,这样才能保证他赢,我们看成取石子且石子只有一堆的情况;那么多行时,我们就可以把两个棋子之间的空格看成有多少个石子,而行可以看成有多少堆,再利用Nim就可以解决问题了;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm 阅读全文
posted @ 2012-04-20 19:34 wutaoKeen 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 只是一道Nim题我们可以把他转化成堆就可以了,这个点在哪个地方就相当于这个地点有好多的石子,这样就可以了。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #include<vector>10 using namesp 阅读全文
posted @ 2012-04-19 22:25 wutaoKeen 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 这个题我是打表出来的,达标代码如下:View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #include<vector>10 using namespace std;11 int d[3][2] = {0,-1,1,0, 阅读全文
posted @ 2012-04-19 22:04 wutaoKeen 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 这题我刚开始推出了n=1,2,3的情况,自己在大胆的猜测是奇偶性,发现A了;后来打表也是奇偶性质;打表代码:View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 int n ; 4 int graph[1010][1010] ; 5 int tab[4][2] = {-1,0,1,0,0,-1,0,1} ; 6 int dfs (int x, int y) 7 { 8 int xx, yy, i, ans ; 9 for (i = 0 ; i < 4 ; i++) 10 { ... 阅读全文
posted @ 2012-04-19 20:40 wutaoKeen 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 这个题要找一下规律:我们假设1为必败点P,则2~9为必胜点,那么10~18又是必败点,19~162又为必胜点,163~324为必败点;必胜点为m*18^n(m<=9),必败点为m*18^n(m>9);View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #inclu 阅读全文
posted @ 2012-04-18 21:23 wutaoKeen 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 这题Nim博弈;这一就是要考虑全部为1的情况;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #include<vector>10 using namespace std;11 12 int main( )13 {1 阅读全文
posted @ 2012-04-18 19:31 wutaoKeen 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 典型的Nim博弈题View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 #include<set> 8 #include<map> 9 #include<vector>10 using namespace std;11 12 int main( )13 {14 int num[124] 阅读全文
posted @ 2012-04-18 17:05 wutaoKeen 阅读(102) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 27 下一页