您的位置:首页 > 其它

HDU1907

2011-12-02 21:43 232 查看
 
HDU1907本题为一题尼姆博弈的变形题目为N堆东西2人轮流取,取完的人为败;此时需要对尼姆进行一步改进将其分为5种状态这5种状态划分如下:

1.       T2 表示在尼姆对n堆东西进行异或值不为0,并且东西数大于2的堆数大于2

2.       T0表示在尼姆对n堆东西进行异或值不为0,并且没有东西数大于2的堆数

3.       S2表示在尼姆对n堆东西进行异或值不0,并且有东西数大于2的堆数大于2

4.       S1表示在尼姆对n堆东西进行异或值为0,并且有东西数大于2的堆数等于1

5.       S0表示在尼姆对n堆东西进行异或值为0,并且没有东西数大于2的堆数

其中经过状态点证明可以得知,T2,S0为奇异局势也就是必败局势而其余为菲奇异局势(必胜局势)那么很容易得到代码:

#include"stdio.h"
int main()
{
int t,n,count,res,num;
scanf("%d",&t);
while(t--)
{
count=0;
res=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&num);
if(num>1)
count++;
res=res^num;
}
if(res==0&&count>=2||res!=0&&count==0)
{
printf("Brother\n");
}
else
{
printf("John\n");
}
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: