C组group2 A - Odd Selection

题目链接:https://vjudge.net/contest/396831#problem/A
题解:给定n个数,选定k个数,判定和是否能可以是偶数。
开始想得是用dfs,但是tl了。后来发现偶数加对结果没有影响,所以只需要考虑奇数所能参与的范围,然后奇数是否可以是加偶数个,即和为偶数
在这里插入图片描述

代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
#define maxn 10010
int a[maxn];
int main()
{
    int t,n,k;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&k);
        int ji=0,ou=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]%2==1)
                ji++;
            else
                ou++;
        }
        int fl=0;
        int beginn=max(k-ou,0);
        int endd=min(k,ji);
        for(int i=beginn;i<=endd;i++)
        {
            if(i%2==1)
            {
                fl=1;
                break;
            }
        }
        if(fl)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页