C組group2 A - Odd Selection

qq_45712954發表於2020-09-26

題目連結: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;
}

相關文章