C.Simple pairs
题目大意:(文末有原题)
给出一个数组,判断能否每两个数间都构成 对,对 要满足:奇偶性相同,或者差1;输出“YES” or “NO”;
思路:
首先数组个数必须是偶数,其次如果奇数和偶数的个数均为偶数,则一定可以,否则,一定是多出来一个奇数或者一个偶数,则从后之前查找,如果有两个数满足 a - b = 1,则输出“YES”,注意要先排序后再查找!
代码:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; while(n--) { int m, c = 0, d = 0, flag = 1; //c,d分别是奇数、偶数的个数 cin >> m; vector<int> e; vector<int> o; for(int i = 0; i < m; i++) { int x; cin >> x; if(x % 2) { e.push_back(x); c++; }else { o.push