其实只要把它化解为取(N堆)石子问题的博弈就可以在十分钟之内解出来
把每行黑白棋位的差看成是一堆石子,这样就根本不用去分析下一步怎么走了
用取(N堆)石子博弈的XOR算法套上便可得解
Code
1#include <iostream>
2using namespace std;
3int main()
4{
5 int i,j,k,t,n,m;
6 int a,b;
7 int d[1002];
8 while (scanf("%d %d",&n,&m)!=EOF)
9 {
10 int ans =0;
11 for (i=0;i<n;i++)
12 {
13 scanf("%d %d",&a,&b);
14 ans = (abs(a-b)-1)^ans ;
15 }
16 if (ans == 0)
17 {
18 printf("BAD LUCK!\n");
19 }
20 else
21 {
22 printf("I WIN!\n");
23 }
24 }
25 return 0;
26}