正题
题目链接:https://ac.nowcoder.com/acm/contest/1100/A
题目大意
nnn个环,第iii个环有aia_iai个珠子。要求涂色时没有相邻的同色。
两个人轮流涂色,直到一个人无法涂色为止。
解题思路
其实先手后手的胜利与他们的操作没有任何关系。
考虑一个nnn个点的环(n>1)(n>1)(n>1),我们发现最终状态下颜色一定是交替出现的,因为如果有两种相邻的同色,那么他们中间至少有一个空位,那里面就可以填上另一种颜色,所有最终被涂色的个数一定是偶数(也就是后手必胜),然后只有一个点就是先手必胜。
多个环的话异或一下就好了。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int T,n,ans;
int main()
{scanf("%d",&T);while(T--){scanf("%d",&n);ans=0;for(int i=1;i<=n;i++){int x;scanf("%d",&x);ans^=(x==1);}if(!ans) printf("hamster\n");else printf("rabbit\n");}
}