暑期训练1:Codeforces Round #729 (Div. 2)(A) Odd Set,

记错了比赛时间,临时进去签到了,后面的一天之内更新吧
A. Odd Set
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
You are given a multiset (i. e. a set that can contain multiple equal integers) containing 2n integers. Determine if you can split it into exactly n pairs (i. e. each element should be in exactly one pair) so that the sum of the two elements in each pair is odd (i. e. when divided by 2, the remainder is 1).

Input
The input consists of multiple test cases. The first line contains an integer t (1≤t≤100) — the number of test cases. The description of the test cases follows.

The first line of each test case contains an integer n (1≤n≤100).

The second line of each test case contains 2n integers a1,a2,…,a2n (0≤ai≤100) — the numbers in the set.

Output
For each test case, print “Yes” if it can be split into exactly n pairs so that the sum of the two elements in each pair is odd, and “No” otherwise. You can print each letter in any case.

Example
inputCopy
5
2
2 3 4 5
3
2 3 4 5 5 5
1
2 4
1
2 3
4
1 5 3 2 6 7 3 4
outputCopy
Yes
No
No
Yes
No
Note
In the first test case, a possible way of splitting the set is (2,3), (4,5).

In the second, third and fifth test case, we can prove that there isn’t any possible way.

In the fourth test case, a possible way of splitting the set is (2,3).
题解:本题就是问我们其中的给出的2n个数中两两拼凑成奇数,问是否这2n个数都能找到这样的拼凑方法。我们只需要进行相关的奇数和偶数统计即可,如果奇数和偶数的个数是相同的话,那么此时就存在n对拼凑的奇数,计算公式:奇数+偶数=奇数

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		int x=0;
		cin>>n;
		n*=2;
		int odd=0;
		int even=0;
		for(int i=1;i<=n;i++)
		{
			cin>>x;
			if(x%2==0)
			  odd++;
			else
			  even++;
		}
		if(odd==even)
		   cout<<"YES"<<endl;
		else
		   cout<<"NO"<<endl;
	}
 } 

上一篇:DncZeus 初学者坎坷之路


下一篇:java语法糖