博弈论
一看题,哇这不是Nim游戏么= =直接异或起来……啊咧怎么不对?
这道题是【Anti-Nim】,普通的Nim是取走最后一个就赢,这题是取走最后一个输……
做法参见
1 /************************************************************** 2 Problem: 1022 3 User: Tunix 4 Language: C++ 5 Result: Accepted 6 Time:16 ms 7 Memory:1272 kb 8 ****************************************************************/ 9 10 //BZOJ 102211 #include12 #include 13 #define F(i,j,n) for(int i=j;i<=n;++i)14 using namespace std;15 16 int getint(){17 int v=0,r=1; char ch=getchar();18 for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-1;19 for(;isdigit(ch);ch=getchar()) v=v*10+ch-'0';20 return v*r;21 }22 /*******************template********************/23 24 int main(){25 int T=getint();26 while(T--){27 int n=getint(),x=0,y=0;28 bool sign=1;29 F(i,1,n){30 y=getint();31 x^=y;32 if (y>1) sign=0;33 }34 if ((sign && !x) || (!sign && x)) puts("John");35 else puts("Brother");36 }37 return 0;38 }