zoukankan      html  css  js  c++  java
  • Codeforces Round #646 (Div. 2) A. Odd Selection(思维/分类讨论)

    A. Odd Selection

    time limit per test

    1 second

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    Shubham has an array aa of size nn, and wants to select exactly xx elements from it, such that their sum is odd. These elements do not have to be consecutive. The elements of the array are not guaranteed to be distinct.

    Tell him whether he can do so.

    Input

    The first line of the input contains a single integer tt (1≤t≤100)(1≤t≤100) — the number of test cases. The description of the test cases follows.

    The first line of each test case contains two integers nn and xx (1≤xn≤1000)(1≤x≤n≤1000) — the length of the array and the number of elements you need to choose.

    The next line of each test case contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1000)(1≤ai≤1000) — elements of the array.

    Output

    For each test case, print "Yes" or "No" depending on whether it is possible to choose xx elements such that their sum is odd.

    You may print every letter in any case you want.

    Example

    Input

    Copy

    5

    1 1

    999

    1 1

    1000

    2 1

    51 50

    2 2

    51 50

    3 3

    101 102 103

    Output

    Copy

    Yes

    No

    Yes

    Yes

    No

    这题还是有点思维量的。

    首先paichu掉几种特殊的情况:

    1. 数组里全是偶数
    2. 数组里全是奇数且要求选出偶数个数(偶数个奇数的和还是偶数)
    3. n==x的话如果数组里奇数的个数是奇数是可以的,否则不可以。

    然后剩下的情况一定都是可以的,因为此时x<n,且数组里有奇数有偶数,这样尽可能多的选偶数,尽可能少的选奇数来动态调整一定能选出来不会证

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n,x,even=0,odd=0;
            cin>>n>>x;
            int i;
            for(i=1;i<=n;i++)
            {
                int temp;
                scanf("%d",&temp);
                if(temp&1)odd++;
                else even++;
            }
            //和是奇数 
            if(n==even)
            {
                cout<<"NO"<<endl;
                continue;
            }
            if(n==odd&&(!(x&1)))
            {
                cout<<"NO"<<endl;
                continue;
            }
            if(n==x)
            {
                if(odd&1)
                {
                    cout<<"YES"<<endl;
                }
                else
                {
                    cout<<"NO"<<endl;
                }
                continue;
            }
            cout<<"YES"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Jni如何传递并且修改两个基础参数
    【转】对于JNI方法名,数据类型和方法签名的一些认识
    Android应用程序开机开机启动
    Android程序中Acticity间传递数据
    2014-7-6 学期总结
    程序员的美:极致与疯狂
    《重构:改善既有代码的设计》——关于代码注释的唠叨
    2014-5-5 近期小结和计划
    Android:RelativeLayout 内容居中
    图像处理:图像灰度化
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/13023888.html
Copyright © 2011-2022 走看看