灰色头像

引子

你灰色头像不会再跳动 哪怕是一句简单的问候 心贴心的交流一页页翻阅多难过 是什么 坠落 升空 又想起你曾说的陪我到最后 暖色的梦变冰凉的枷锁 如果时光倒流我们又能抓得住什么。

背景

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 }

 

posted @ 2017-08-22 21:15  J_william  阅读(784)  评论(0编辑  收藏  举报