bzoj1022 [SHOI2008]小约翰的游戏John
2016-09-07 11:46
344 查看
题解:首先考虑只有1的情况,奇数个1先手必败,偶数个1先手必胜;
若有大于1的堆,所有堆的xor之和为0,则先手必败;否则先手必胜。xor之和为0,那么后手的策略为 先手取多少,后手取多少;最后就会剩下两种状态(后手先取):
1. 很多堆1和一堆大于1的堆
2. 两个大于1的堆
对于第一种情况,若1的个数为奇数,那么后手取完大于1的堆,剩下奇数个1的堆,后手必胜;若1的个数为偶数,则后手将大于1的堆取成1,则剩下奇数个1的堆,后手必胜。
对于第二种情况,最后必然会变成1和1个大于1的堆,此时后手取完大于1的堆,后手必胜
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
int n,xorsum;
int main()
{
int Case;scanf("%d",&Case);
while (Case--){
int Flag=0;
scanf("%d",&n);xorsum=0;
for (int i=0;i<n;i++){
int x;scanf("%d",&x);
if (x>1)Flag=1;
xorsum^=x;
}
if (!Flag){
if (n%2)puts("Brother");else puts("John");
}else{
if (xorsum)puts("John");else puts("Brother");
}
}
return 0;
}
若有大于1的堆,所有堆的xor之和为0,则先手必败;否则先手必胜。xor之和为0,那么后手的策略为 先手取多少,后手取多少;最后就会剩下两种状态(后手先取):
1. 很多堆1和一堆大于1的堆
2. 两个大于1的堆
对于第一种情况,若1的个数为奇数,那么后手取完大于1的堆,剩下奇数个1的堆,后手必胜;若1的个数为偶数,则后手将大于1的堆取成1,则剩下奇数个1的堆,后手必胜。
对于第二种情况,最后必然会变成1和1个大于1的堆,此时后手取完大于1的堆,后手必胜
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
int n,xorsum;
int main()
{
int Case;scanf("%d",&Case);
while (Case--){
int Flag=0;
scanf("%d",&n);xorsum=0;
for (int i=0;i<n;i++){
int x;scanf("%d",&x);
if (x>1)Flag=1;
xorsum^=x;
}
if (!Flag){
if (n%2)puts("Brother");else puts("John");
}else{
if (xorsum)puts("John");else puts("Brother");
}
}
return 0;
}
相关文章推荐
- 【BZOJ 1022】 [SHOI2008]小约翰的游戏John
- bzoj1022【SHOI2008】【小约翰的游戏John】【博弈论】
- 【BZOJ】1022: [SHOI2008]小约翰的游戏John
- bzoj千题计划112:bzoj1022: [SHOI2008]小约翰的游戏John
- 1022: [SHOI2008]小约翰的游戏John - BZOJ
- 51nod 1069 Nim游戏 + BZOJ 1022: [SHOI2008]小约翰的游戏John(Nim游戏和Anti-Nim游戏)
- [Bzoj1022][SHOI2008]小约翰的游戏John(博弈论)
- BZOJ_1022_[SHOI2008]_小约翰的游戏John_(博弈论_反Nim游戏)
- BZOJ 1022 [SHOI2008]小约翰的游戏John
- [bzoj1022][SHOI2008]小约翰的游戏 John (博弈论)
- AC日记——[SHOI2008]小约翰的游戏John bzoj 1022
- 12.7 bzoj1022 [SHOI2008]小约翰的游戏John
- bzoj1022 [SHOI2008]小约翰的游戏John
- [Anti-Nim Anti-SG SJ定理] BZOJ 1022 [SHOI2008]小约翰的游戏John
- BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论
- BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论
- BZOJ 1022: [SHOI2008]小约翰的游戏John【anti-SG】
- BZOJ 1022 [SHOI2008]小约翰的游戏John 题解与分析
- bzoj 1022: [SHOI2008]小约翰的游戏John(反nim游戏)
- [BZOJ1022][SHOI2008]小约翰的游戏John(博弈Anti-Nim游戏)