题目链接:点击打开链接
题意:有n堆石头,Alice和bob每人每次可以从一堆里面拿n个石头n>0(从左到右),最后没有拿的人输,判断是不是先手赢。
思路:判断谁有主动,肯定是第一个拿到多余1个石头的那一堆主动,就是判断谁能拿到多与1的那一堆。
代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
int data[1010],T,n,cnt;
// freopen("data.in","r",stdin);
scanf("%d",&T);
while (T--){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",data+i);
if(data[0]>1||n==1)
puts("Yes");
else {
cnt=0;
for(int i=0;data[i]==1&&i<n-1;i++){
cnt++;
}
if(cnt&1){
puts("No");
}
else {
puts("Yes");
}
}
}
return 0;
}