#205-[STL set] 灰色头像
Description
引子:
这一些不要管,读了没有用的
背景:
WJMZBMR 喜欢上 QQ。。但是很多人的头像已经变成灰色了。这让他压力很大。而且 WJMZBMR 的好友太多了,大量的灰色头像让他无法准确的找到他想找的好友。。
今天 WJMZBMR 决定清理一下他的 QQ,找出那些不会在跳动的头像并且把它们踢掉。为此他翻出了最近一个月的聊天记录。
如果一个头像在在最近一个月中与 WJMZBMR 聊天次数小于等于 2 次, WJMZBMR 就会认为这是不会再跳动的灰色头像然后把他删掉。
那么请你为 WJMZBMR 写个程序完成这件事情,并输出剩下的头像。
定义:
头像其实就是 ID,是一个长度小于等于 30 的,由小写或者大写英文字母组成的字符串。
严格的数学定义:
给出一些字符串,输出其中出现次数大于等于 3 次的。
关于输出的顺序,出现次数多在前,如果次数一样多就按字典序,相同的 ID 只输出一次。
Input
第一行 N 表示聊天记录的长度。
接下来 N 行每行一个字符串表示与 WJMZBMR 聊天的 ID。
Output
第一行表示要输出的头像的个数 M。
之后M行每行一个字符串表示输出的 ID(请按给定顺序输出,两个相同的 ID 只输出一次)。
-
Sample Input
-
Sample Output
HINT
20%的数据 N<=1000
100%的数据 N<=100000
Uploaded By MCHacker
直接STLset爆枚......
注意最后的排序顺序.
#include <iostream> #include <cstdio> #include <string> #include <queue> #include <set> #include <algorithm>using namespace std; const int MAXN = 100010;multiset<string> st; priority_queue<string> q; string s[MAXN], r[MAXN];bool comp(string a, string b) { // 最后的排序int aa = st.count(a), bb = st.count(b);if (aa!=bb) return aa>bb;return a<b; } int main() {int n, id = 0; scanf("%d", &n);for (int i=1; i<=n; ++i) {string str; cin >> str;if (!st.count(str)) s[++id] = str;st.insert(str);}int res = 0;for (int i=1; i<=id; ++i) { // 枚举每个字符串if (st.count(s[i])>2) { // 大于等于3的,可以有r[++res] = s[i]; // 存入结果数组}}sort(r+1, r+res+1, comp); // 排序printf("%d", res);for (int i=1; i<=res; ++i) {printf("\n"); cout << r[i];}return 0; }
总结
以上是生活随笔为你收集整理的#205-[STL set] 灰色头像的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: MFC三张图按钮三种状态
- 下一篇: ROS::下载安装ros-qtc-plu