NYOJ D : 我不喊麦,我叫MC李白

D : 我不喊麦,我叫MC李白

题目描述

 
   

窗前我明月光,疑是他地上霜。举头这望明月,低头那思故乡。

大家好,我是MC——李白 

有人说,随便找一首古诗,加上我、他、这、那四个字,那都成喊麦的了。比如说,我(诗仙)——MC李白。其实喊麦挺不容易的,当然,搞ACM更"休闲"(修仙)。

给你一些数a1,a2,a3,.....,an,长度为n。请你确定是否可以将其划分成奇数个非空子段,每个子段具有奇数长度,以奇数开头和结尾。

子段是整个序列的连续片段。例如,{3,4,5}和{1}是序列{1,2,3,4,5,6}的子段,而{1,2,4}和{7}则不是。

输入

 
   

输入文件的第一行是一个整数T(1≤T≤1000),表示有T组数据。接下来是T组数据,每组数据有两行,

第一行有一个整数n(1≤n≤1000000),表示接下来有n个数。

第二行有n个整数,每两个整数之间有一个空格,整数范围为[0,1000000000]。

输出

如果可以满足要求,输出“Yes”,否则输出“No”(不含引号)

样例输入

复制
4
3
1 3 5
5
1 0 1 5 1
3
4 3 1
4
3 9 9 3

样例输出

复制
Yes
Yes
No
No

提示

 
   

在第一个例子中,将序列划分为1个子段:{1,3,5},满足要求。

在第二个例子中,将序列划分为3个子段:{1,0,1},{5},{1}。

在第三个例子中,其中一个子段必须以4为起点,这是一个偶数,因此不能满足要求。

在第四个例子中,序列可以分为2个子段:{3,9,9},{3},但这不是一个有效的解,因为2是一个偶数。

代码:

#include
#include
using namespace std;
int main()
{
    int t,n;
    long long a;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        int o=1;
        for(int i=1;i<=n;i++)
        {
           scanf("%lld",&a);
           if(i==1||i==n)//开头和结尾判断就行
           {
               if(a%2==0)  
               {
                   o=0; //有一个为偶就不行
               }
           }
        }
        if(n%2==0)
        {
            printf("No\n");
            continue;
        }
        if(o)
            printf("Yes\n");
        else
            printf("No\n");
    }
}


你可能感兴趣的:(NYOJ D : 我不喊麦,我叫MC李白)