hdu5600 N bulbs

#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;

}

心得:本以为是道水题,结果挺有意思的。本题很像我们小时候玩过的游戏,类似于华容道,具体想不起来了。思路:一次走过去既然可以往回走改变状态,那01分布的位置就不重要了,具体在于个数。为1的一次走过,所以很容易变为0;重点是为0的元素,每个可以借助相邻元素变化(两个或偶数个),但当其为奇数个时总有一个变一次从而变为1而没有元素与其匹配,所以当0的个数为偶数个时就可以通过,从而将元素全变为0。注意N=1的特殊情况。

还没完全相同,回家再想,就要做火车回家喽,22小时,好兴奋~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值