算法与数学之美 2020-06-01
题目链接:https://codeforces.com/contest/1363/problem/A
判断是否能从 $n$ 个数中选 $k$ 个数加起来和为奇数。
首先 $n$ 个数中需至少有 $1$ 个奇数,之后为了不影响和的奇偶性向余下 $k-1$ 个数中一次加入两个奇数或一个偶数即可。
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n, x; cin >> n >> x;
int odd = 0, even = 0;
for (int i = 0; i < n; i++) {
int t; cin >> t;
if (t & 1) ++odd;
else ++even;
}
if (odd == 0) cout << "No" << "\n";
else {
--x, --odd;
x -= 2 * min(x / 2, odd / 2);
cout << (even >= x ? "Yes" : "No") << "\n";
}
}
int main() {
int t; cin >> t;
while (t--) solve();
}