题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5600
题意:给我们一排灯的情况,每走过一次就能造成灯的开关情况,问我们可不可以达到一种刚刚好到达最后的一个灯且所有的灯都关掉的状态。
我们分析一下灯的情况,如果灯是开着的,那么只需要奇数次经过就能达到关闭的状态,而本来关闭的需要经过偶数次经过就可以达到这个状态。我们分析,如果想要达到偶数次的话,那么我们必须在走到这个点时转一个方向,如果我们想达到奇数次的话,我们走到这个点不转换方向直接走过去即可,大家可以再仔细思考一下这个问题,如果我们想达到到最后一个且所有灯都关闭的情况的话,我们应该讨论一下转方向的次数,只要是偶数次转方向的次数我们能达到目标状态,如果转方向次数是奇数的话,怎么样也达不到这种状态。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,num=0;
scanf("%d",&n);
while(n--)
{
int tmp;
scanf("%d",&tmp);
if(tmp == 0) num++;
}
if(num%2 == 0) printf("YES\n");
else printf("NO\n");
}
}