其实只要把它化解为取(N堆)石子问题的博弈就可以在十分钟之内解出来
把每行黑白棋位的差看成是一堆石子,这样就根本不用去分析下一步怎么走了
用取(N堆)石子博弈的XOR算法套上便可得解

Code
1
#include <iostream>
2
using namespace std;
3
int 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
}