寂静的角落 星空在前,路在脚下
Odd Set
发布于: 2021-07-05 更新于: 2021-07-05 分类于: 题解 阅读次数: 

不得不说,这题很水。

Odd Set

提交地址:洛谷 CF1542ACodeForces CF1542A

题目大意

给你一个有 $2n$ 个元素的元素可重复集合(类似于 C++ 中的 std::multiset),让你将其分成一个 $n$ 个每个有两个元素的对子,要求每个对子中的两个元素和为奇数

分析

如果两个数的和为奇数的话,那么只能是一奇一偶。

那么只要一半奇数一半偶数即可。

那么统计奇数和偶数个数即可,当个数相同时输出 Yes,反之输出 No

$\rm\color{green}code$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cctype>
#include <cstdio>
using namespace std;
template <typename T = int>
inline T qread() {
T n = 0;
bool flag = false;
char c = getchar();
while (!isdigit(c) && c != '-') c = getchar();
if (c == '-') flag = true, c = getchar();
while (isdigit(c)) n = (n << 3) + (n << 1) + (c ^ 48), c = getchar();
return flag ? -n : n;
}
int t, n, k, cnt1, cnt2;
int main() {
t = qread();
while (t--) {
n = qread() << 1;
cnt1 = cnt2 = 0; // 多测清空
while (n--) {
k = qread();
if (k & 1)
cnt1++;
else
cnt2++;
}
puts(cnt1 == cnt2 ? "Yes" : "No");
}
return 0;
}
本文默认采用 署名-非商业性使用-相同方式共享 4.0 国际 许可证