Orz我太菜了一直在想 S G SG SG函数没往 n i m nim nim博弈上想
虽然 n i m nim nim博弈也算是 s g sg sg函数…
先单独考虑一行的胜负情况
如果一个人把棋子移向远离对手的方向,是没有意义的
因为下一次对手可以移动任意距离,也就是离自己多远都可以
那么只有棋子初始的中间距离有用
每次可以把中间距离缩小若干,缩到不能缩为止
然后就是一个 n i m nim nim博弈了
#include <bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
while( cin >> n >> m )
{
int ans = 0;
for(int i=1;i<=n;i++)
{
int l,r; scanf("%d%d",&l,&r);
ans ^= ( abs(l-r)-1 );
}
if( ans ) cout << "I WIN!\n";
else cout << "BAD LUCK!\n";
}
}