Codeforces Round #646 (Div. 2) A. Odd Selection(数学)
题目链接: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(); }
相关推荐
xceman 2020-10-13
算法与数学之美 2020-10-07
Anscor 2020-10-05
liwg0 2020-09-08
数学爱好者 2020-08-31
thermodynamicB 2020-08-11
夕加加 2020-07-20
willowwgx 2020-07-18
kuoying 2020-07-16
Anscor 2020-07-14
starletkiss 2020-07-08
kingzone 2020-06-27
xceman 2020-06-27
算法与数学之美 2020-06-21
kuoying 2020-06-21
秒懂数学 2020-06-17