团体程序设计天梯赛PTA L2-019悄悄关注

 分析:题意较好理解,解题的时候用map先标记是否在关注列表,在用另一个map标记点赞次数,并累加点赞数,算出平均值,最后利用set的自动排序存储答案。

做题遇到的“坎”有:1、字符数组转化到字符串(解决方法:emmm是可以直接赋值的)2、对STL中的容器使用并不熟练,输入输出查找插入还要再多多使用。

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<map>
 4 #include<vector>
 5 #include<set>
 6 #include<string>
 7 #include<cstring>
 8 #include<sstream>
 9 using namespace std;
10 const int N = 1e5 + 10;
11 map<string,int> mp,vis;
12 vector<string>vec;
13 set<string>ans;
14 int main()
15 {
16     int n,f,sum=0;
17     double ave;
18     string ss;
19     char na[N];
20     scanf("%d",&n);
21     getchar();
22     getline(cin,ss);
23     stringstream sstream(ss);
24     while (sstream)
25       {
26         string name;
27         sstream>>name;
28         mp[name] = 1;
29       }
30     scanf("%d",&n);
31     getchar();
32     for(int i = 1; i <= n; i ++)
33     {
34         string name;
35         scanf("%s%d",na,&f);
36         sum+=f;
37         name = na;
38         if(mp[name]!=1)
39         {
40             vis[name]=f;
41             vec.push_back(name);
42         }
43     }
44     ave=sum/(double)n;
45     for(int i = 0; i<vec.size(); i++)
46     {
47         if(vis[vec[i]]>ave)
48             ans.insert(vec[i]);
49     }
50     set<string>::iterator it = ans.begin();
51     if(it==ans.end())
52         cout<<"Bing Mei You
";
53     else{
54         for(it=ans.begin();it != ans.end();it ++)
55          cout<<*it<<endl;
56     }
57     return 0;
58 }
原文地址:https://www.cnblogs.com/dark-ming/p/13866274.html