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;
    }
  • 相关阅读:
    mysql 数据类型学习笔记(持续更新)
    datetime 和 timestamp 的区别
    Jupyter notebook 常用快捷键(持续更新)
    遍历SnoMed的multiHierarchy中给定概念的子概念
    Ramdom Walk with Restart
    矩阵和向量
    power-law
    一些SQL操作(收集)
    MySQL5.7.19-win64安装启动
    OO_UNIT1_SUMMARY
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/13023888.html
Copyright © 2011-2022 走看看