题解 CF864A 【Fair Game】

Chinshyo

2020-08-24 14:37:12

Solution

### 这是一道哈希表的题 ~~前面几位大佬都分析过题面,蒟蒻就暂且不分析了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; } ``` ##### ~~萌新初次写题解,求管理大大给过 :(~~