HDU1730 Northcott Game(NIM博弈变形)

传送门

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";
	}
}
上一篇:Python GUI编程:制作一个文档图片提取软件


下一篇:博弈论基础