A. Odds and Ends Codeforces Round #431 (Div. 2)(水题)

该博客讨论了一道编程竞赛题目,要求判断一个整数序列是否能被分为奇数个非空子序列,每个子序列长度为奇数且两端都是奇数。博客提供了样例输入和输出,并解释了解题思路,即序列长度和首尾元素都必须是奇数。
摘要由CSDN通过智能技术生成

Where do odds begin, and where do they end? Where does hope emerge, and will they ever break?

Given an integer sequence a1, a2, …, an of length n. Decide whether it is possible to divide it into an odd number of non-empty subsegments, the each of which has an odd length and begins and ends with odd numbers.

A subsegment is a contiguous slice of the whole sequence. For example, {3, 4, 5} and {1} are subsegments of sequence {1, 2, 3, 4, 5, 6}, while {1, 2, 4} and {7} are not.

Input
The first line of input contains a non-negative integer n (1 ≤ n ≤ 100) — the length of the sequence.

The second line contains n space-separated non-negative integers a1, a2, …, an (0 ≤ ai ≤ 100) — the elements of the sequence.

Output
Output “Yes” if it’s possible to fulfill the requirements, and “No” otherwise.

You can output each letter in any case (upper or lower).

Examples
input
3
1 3 5
output
Yes
input
5
1 0 1 5 1
output
Yes
input
3
4 3 1
output
No
input
4
3 9 9 3
output
No
Note
In the first example, divide the sequence into 1 subsegment: {1, 3, 5} and the requirements will be met.

In the second example, divide the sequence into 3 subsegments: {1, 0, 1}, {5}, {1}.

In the third example, one of the subsegments must start with 4 which is an even number, thus the requirements cannot be met.

In the fourth example, the sequence can be divided into 2 subsegments: {3, 9, 9}, {3}, but this is not a valid solution because 2 is an even number.

题意一定要看清!!!一定要看清!!!一定要看清!!!

大致题意:将一个序列分成奇数个序列(开始没看到这个条件,结果卡了半天),且要求每个子序列中元素的个数为奇数个,每个子序列的头尾两个数均为奇数。如果能满足要求则输出yes否则no。

思路:奇数个奇数相加等于奇数,所以序列长度n必须满足是奇数,然后首尾两个数也必须满足是奇数。所以这样子的话这个序列本身就是满足条件不用分了。判断一下奇偶即可。

代码如下

#include <iostream> 
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cstdio>
#include <map>
using namespace std; 

int main()
{
    int n;
    scanf("%d",&n);
    int x,y;
    scanf("%d",&x);
    y=x;
    for(int i=2;i<=n;i++)
    scanf("%d",&y);
    if(n&1&&x&1&&y&1)
    printf("Yes\n");
    else 
    printf("No\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值