#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