题解 CF864A 【Fair Game】
Chinshyo
2020-08-24 14:37:12
### 这是一道哈希表的题
~~前面几位大佬都分析过题面,蒟蒻就暂且不分析了QwQ~~
------------
用哈希表来存储所有的元素,然后扫描,用计数器记下一共够多少种数。(>3种数就直接输出NO)之后,看俩个数数量是否相等,相等就可以输出YES了。整体思路就是用到一个数组和一个**哈希表**。
------------
### 上代码:
# C++ CODE
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[105],x[105];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x[i];//无脑输入
a[x[i]]++;//存入哈希表
}
int cnt=0;
bool flag=false;//确认是否有成对情况
int ai,aj;
for(int i=1;i<=100;i++)
{
for(int j=1;j<=100;j++)
{
if(i!=j && a[i]==a[j] && a[i]!=0)
{
cnt++;//发现一种数,计数器+1
flag=true;//发现成对情况,状态改变
}
}
}
if(flag==true && cnt==2)//两种判断条件上边都讲过
{
cout<<"YES"<<endl;
cout<<x[1]<<" ";//第一种绝对可以取,先取出来
for(int i=2;i<=n;i++)
{
if(x[i]!=x[1]) //发现另一种
{
cout<<x[i]<<endl;//输出另一种
return 0;//直接结束程序
}
}
}
else cout<<"NO"<<endl;//不符合就输出NO
return 0;
}
```
##### ~~萌新初次写题解,求管理大大给过 :(~~