题目来自于:CodeForces - 864A
首先我们来理解一下题意:
从注意事项第三条入手:要把所有的牌拿走(既然一人拿一次,那么拿的牌的数量肯定每种卡片的数量是总数的一半)
最主要的程序设计:
c[i] * 2 != n //如果不符合,就直接输出NO
附上c++的ac代码:
#include <iostream>
#include <vector>
using namespace std;
int a[100009], c[100009];
int main(){
int n;
cin >> n;
vector<int> v;
for (int i = 0; i < n; i++){
cin >> a[i];
c[a[i]]++;
}
bool tf = true;
for(int j=0; j<=100; j++){
if(c[j]!=0&&c[j]*2!=n)
tf = false;
if(c[j]>=1)
v.push_back(j);
}
if(!tf){
cout << "No" << endl;
}else{
cout << "Yes" << endl << v[0] << endl << v[1] << endl;
}
return 0;
}
最后附上python3代码:
a = [input() for i in range(input())]//输入输出
s = set(a) # set() 函数创建一个无序不重复元素集
b = s.pop()# 弹出一个值用于处理查找
if len(s) == 1 and a.count(b) * 2 == len(a):# a中有多少个b于a的长度比较,两倍就输出
print 'YES'
print b, s.pop()# 直接输出b和再弹出一个值
else:
print 'NO'
# By ytz123, contest: Codeforces Round #436 (Div. 2), problem: (A) Fair Game, Accepted, #