第一次正式接触anti-sg、、
惨到暴力都不会、
这里的胜负条件相反不是简单地将胜负取反,它的胜负局面的判断是不一样的、
所以如果第一次碰到这种题就手玩找规律吧,,毕竟这可以说是一个结论题:
如果sg==0 且 有石子堆石子个数数>1
或 sg>0且 所有石子堆石子个数<1
则先手赢、、
博弈的证明太难了
码:
#include<iostream>
#include<cstdio>
using namespace std;
int t,n,i,x;
int main()
{
scanf("%d",&t);
while(t--)
{
bool flag=0;
int o=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&x);
if(x>1)flag=1;
o^=x;
}
if((o==0&&flag==0)||(o!=0&&flag))
{
printf("John\n");
}else printf("Brother\n");
}
}