引子
你灰色头像不会再跳动 哪怕是一句简单的问候 心贴心的交流一页页翻阅多难过 是什么 坠落 升空 又想起你曾说的陪我到最后 暖色的梦变冰凉的枷锁 如果时光倒流我们又能抓得住什么。
背景
WJMZBMR喜欢上QQ。。但是很多人的头像已经变成灰色了。这让他压力很大。而且WJMZBMR的好友太多了,大量的灰色头像让他无法准确的找到他想找的好友。。 今天WJMZBMR决定清理一下他的QQ,找出那些不会在跳动的头像并且把它们踢掉。为此他翻出了最近一个月的聊天记录。 如果一个头像在在最近一个月中与WJMZBMR聊天次数小于等于2次,WJMZBMR就会认为这是不会再跳动的灰色头像然后把他删掉。 那么请你为WJMZBMR写个程序完成这件事情,并输出剩下的头像。
定义
头像其实就是ID,是一个长度小于等于30的,由小写或者大写英文字母组成的字符串。
严格的数学定义
给出一些字符串,输出其中出现次数大于等于3次的。 关于输出的顺序,出现次数多在前,如果次数一样多就按字典序,相同的ID只输出一次。
输入格式
第一行N表示聊天记录的长度 接下来N行每行一个字符串表示与WJMZBMR聊天的ID。
输出格式
第一行表示要输出的头像的个数M 之后M行每行一个字符串表示输出的ID(请按给定顺序输出,两个相同的ID只输出一次)
样例输入
6
Gx
tracyhenry
seventhplus
Gx
seventhplus
Gx
样例输出
1
Gx
数据范围
20%的数据N<=1000
100%的数据 N<=100000
思路
STL大法好\(^o^)/~
string+map水过;
代码实现
1 #include<map> 2 #include<cstdio> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 const int maxn=1e5+10; 7 int n,m; 8 string ans[maxn]; 9 map<string,int>key; 10 string ch; 11 bool comp(string x,string y){return key[x]>key[y]||(key[x]==key[y]&&x<y);} 12 int main(){ 13 freopen("gray.in","r",stdin); 14 freopen("gray.out","w",stdout); 15 scanf("%d",&n); 16 for(int i=1;i<=n;i++){ 17 cin>>ch; 18 key[ch]++; 19 if(key[ch]==3) ans[m++]=ch; 20 } 21 sort(ans,ans+m,comp); 22 printf("%d\n",m); 23 for(int i=0;i<m;i++) cout<<ans[i]<<endl; 24 return 0; 25 }