摘要: 暴力打表!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define M 1000000 7 #define ll __int64 8 using namespace std; 9 int sg[1000000];10 int get_len(int n)11 {12 if(n>=100000) return 6;13 else if(n>=10000) return 5;14 else if(n>=1000) return 4;15 else if(n>=100) return... 阅读全文
posted @ 2013-09-20 22:26 _随心所欲_ 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 其实规律很好找的,当从某点开始,向某一边找出非0的个数,为奇数时必胜。代码如下: 1 #include 2 #include 3 using namespace std; 4 int n,a[25]; 5 bool dfs(int m) 6 { 7 int cnt=0,i=m,k; 8 while(a[i]) i=(i+1)%n,cnt++; 9 if(cnt&1) return 1;10 i=(m+n-1)%n;cnt=0;11 while(a[i]) i=(n+i-1)%n,cnt++;12 if(cnt&1) return 1;13 ... 阅读全文
posted @ 2013-09-20 21:47 _随心所欲_ 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 思路:HDU有过类似的题目,也就是谁面对FIB数,就处于必败状态。再求第二问的时候要注意不一定要在一步之内就让对手处于必败状态,可以多步进行,这个过程可以用递归实现。代码如下: 1 #include 2 using namespace std; 3 int fib[44]; 4 int dfs(int n) 5 { 6 int k=0; 7 while(fib[k]>n){18 int k=0;19 while(fib[k]<n) k++;20 if(fib[k]==n) cout<<"lose"<<endl;21 ... 阅读全文
posted @ 2013-09-20 20:30 _随心所欲_ 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 思路:为了方便,当c1>c2时将0变为1,1变为0.空格最多有10个,每个空格有3个状态,如果不状态压缩,会TLE的。所以最多有3^10种情况代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define inf 1mm; 21 bool vis[9][9]; 22 void dfs(int x,int y) 23 { 24 if(vis[x][y]) return ; 25 vis[x][y]=1; 26 s... 阅读全文
posted @ 2013-09-20 19:21 _随心所欲_ 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 思路:用极大极小搜索解决这样的问题很方便!!代码如下: 1 #include 2 #include 3 #define inf 100000000 4 using namespace std; 5 char str[4][5]; 6 int x,y,num; 7 bool ok(int x,int y) //判断是否胜 8 { 9 int i; 10 for(i=0;i=mi) return ma; 46 } 47 return ma; 48 } 49 int minimax(int x,int y,int ma) 50 {... 阅读全文
posted @ 2013-09-20 12:02 _随心所欲_ 阅读(299) 评论(0) 推荐(0) 编辑