hdu 3032 Nim or not Nim SG函数入门+打表找规律

点击打开链接

//题意:n堆石子 每堆a[i] 操作为:拆分成两堆或者取若干个 //sg[a[i]]>=sg[a[i]]^k ,sg[x]=mex(sg[yi])
// BOUTON'S THEOREM:n堆石子对应的(sg[a[1]]^sg[a[2]]....^sg[a[n]])=k时(k!=0) 将sg[a[i]]->sg[a[i]]^k即可使异或式为0
//SG异或式为0时 由于消去律所以所有操作异或式都将非0 

#include 
using namespace std;
typedef long long ll;
const int inf=1e9;
const int N=1e0+20;
int n,p;
int sg[N],vis[N];

void table()
{
	//sg[x]=mex(sg[yi])
	sg[0]=0;sg[1]=1;
	for(int i=2;i>t;
	while(t--)
	{
		int n;
		cin>>n;
		ll ans=0,x;
		for(int i=1;i<=n;i++)
		{
			scanf("%I64d",&x);
			ans^=SG(x);
		}
		if(!ans)
		puts("Bob");
		else
		puts("Alice");
	}
	return 0;	
} 


你可能感兴趣的:(Game,Theory)