#include <stdio.h>
#include <string.h>
int main()
{
int i, j, T, N, num, time;
scanf("%d", &T);
while(T--)
{
time = 0;
scanf("%d", &N);
scanf("%d", &num);
if(N == 1)
{
if(num == 1) printf("YES\n");
else printf("NO\n");
continue;
}
if(num == 0) time ++;
N --;
while(N --)
{
scanf("%d", &num);
if(num == 0) time ++;
}
if(time % 2 == 0) printf("YES\n");
else printf("NO\n");
}
return 0;
#include <string.h>
int main()
{
int i, j, T, N, num, time;
scanf("%d", &T);
while(T--)
{
time = 0;
scanf("%d", &N);
scanf("%d", &num);
if(N == 1)
{
if(num == 1) printf("YES\n");
else printf("NO\n");
continue;
}
if(num == 0) time ++;
N --;
while(N --)
{
scanf("%d", &num);
if(num == 0) time ++;
}
if(time % 2 == 0) printf("YES\n");
else printf("NO\n");
}
return 0;
}
心得:本以为是道水题,结果挺有意思的。本题很像我们小时候玩过的游戏,类似于华容道,具体想不起来了。思路:一次走过去既然可以往回走改变状态,那01分布的位置就不重要了,具体在于个数。为1的一次走过,所以很容易变为0;重点是为0的元素,每个可以借助相邻元素变化(两个或偶数个),但当其为奇数个时总有一个变一次从而变为1而没有元素与其匹配,所以当0的个数为偶数个时就可以通过,从而将元素全变为0。注意N=1的特殊情况。
还没完全相同,回家再想,就要做火车回家喽,22小时,好兴奋~