博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pat L2-019. 悄悄关注
阅读量:4954 次
发布时间:2019-06-12

本文共 2526 字,大约阅读时间需要 8 分钟。

                                                                 L2-019. 悄悄关注

时间限制
150 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。

输入格式:

输入首先在第一行给出某用户的关注列表,格式如下:

人数N 用户1 用户2 …… 用户N

其中N是不超过5000的正整数,每个“用户i”(i=1, ..., N)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空格分隔。

之后给出该用户点赞的信息:首先给出一个不超过10000的正整数M,随后M行,每行给出一个被其点赞的用户ID和对该用户的点赞次数(不超过1000),以空格分隔。注意:用户ID是一个用户的唯一身份标识。题目保证在关注列表中没有重复用户,在点赞信息中也没有重复用户。

输出格式:

我们认为被该用户点赞次数大于其点赞平均数、且不在其关注列表上的人,很可能是其悄悄关注的人。根据这个假设,请你按用户ID字母序的升序输出可能是其悄悄关注的人,每行1个ID。如果其实并没有这样的人,则输出“Bing Mei You”。

输入样例1:
10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao8Magi 50Pota 30LLao 3Ammy 48Dave 15GAO3 31Zoro 1Cath 60
输出样例1:
AmmyCathPota
输入样例2:
11 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao Pota7Magi 50Pota 30LLao 48Ammy 3Dave 15GAO3 31Zoro 29
输出样例2:
Bing Mei You 题意:现在要找出一个用户悄悄关注的所有可能的用户。已知该用户的关注用户(并非悄悄关注),以及该用户在一段时间内给其他用户点赞的情况,如果他对某个用户点赞的次数大于对所有用户平均的点赞数,并且该用户不在关注用户的列表内,那么 这个用户就可能是一个悄悄关注的用户。 思路:对点赞情况进行排序,依据点赞次数从小到大排,那么现在就可以二分查找出比平均点赞数大的用户,对于每一个这样的用户,找一下该用户是否在关注用户的集合中出现,如果没有出现,意味着该用户可能是一个悄悄关注的用户。 AC代码:
#define _CRT_SECURE_NO_DEPRECATE#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int N_MAX = 5000 + 4, M_MAX = 10000 + 1;struct per { int first; string second; per(int first, string second) :first(first), second(second) {} bool operator <(const per&b)const { return this->first < b.first; }};vector
person;//点赞的记录set
table;set
Set;int Sum(vector
a) { int sum = 0; for (vector
::iterator it = a.begin(); it != a.end(); it++) sum += it->first; return sum;}int main() { int N, K; scanf("%d", &N); for (int i = 0; i < N; i++) { string s; cin >> s; table.insert(s); } scanf("%d", &K); for (int i = 0; i < K; i++) { string s; int a; cin >> s; scanf("%d", &a); person.push_back(per(a, s)); } int ave = Sum(person) / K; sort(person.begin(), person.end()); string s1 = " ";//!!!! vector
::iterator it = upper_bound(person.begin(), person.end(), per(ave, s1));//it指针,指向比平均赞数大的人 bool what = 0, ant = 0; for (; it != person.end(); it++) { set
::iterator iter = table.find(it->second);//在list库中查找是否有人名it->second if (iter == table.end()) { //没有这个人 ant = 1; Set.insert(it->second); } } if (!ant)printf("Bing Mei You\n"); else { for (set
::iterator it = Set.begin(); it != Set.end(); it++) cout << *it << endl; } return 0;}

 

转载于:https://www.cnblogs.com/ZefengYao/p/6640411.html

你可能感兴趣的文章
MVC网址路由与生命周期
查看>>
.NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
查看>>
经典案例, 每隔一分钟执行一次的定时任务, 用 thread+ while(true) 还是timer
查看>>
面向对象
查看>>
leetcode Lowest Common Ancestor of a Binary Tree
查看>>
安装NoSQL数据库类型的redis 和 memcache数据库及其扩展
查看>>
返璞归真vc++之字符类型
查看>>
IIS7增加mine类型,以便可以访问apk
查看>>
基于MVC4+EF5.0+Ajax+Json+CSS3的简单注册页面(get&post)
查看>>
BinaryReader 和BinaryWriter 读写类对象
查看>>
C# 翻页设计:首页,上一页,下一页,末页 ,跳转
查看>>
UIBezierPath 的使用
查看>>
日语常用计算机词汇
查看>>
PHP书写效率问题
查看>>
WPF Silverlight异同明细【推荐】
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
day12 函数对象,名称空间与作用域
查看>>
MSDTC处理方案
查看>>
【转】如何在Qt 4程序中优化布局结构-兼回答网友提问
查看>>
C# 线程(五):线程池
查看>>