当前位置: 首页 > news >正文

PTA L2-021 点赞狂魔

微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到的一切内容点赞来狂刷存在感,这种人就被称为“点赞狂魔”。他们点赞的标签非常分散,无法体现出明显的特性。本题就要求你写个程序,通过统计每个人点赞的不同标签的数量,找出前3名点赞狂魔。

输入格式:

输入在第一行给出一个正整数N(≤100),是待统计的用户数。随后N行,每行列出一位用户的点赞标签。格式为“Name K F1​⋯FK​”,其中Name是不超过8个英文小写字母的非空用户名,1≤K≤1000,Fi​(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从 1 到 $10 ^ 7$ 编号。数字间以空格分隔。

输出格式:

统计每个人点赞的不同标签的数量,找出数量最大的前3名,在一行中顺序输出他们的用户名,其间以1个空格分隔,且行末不得有多余空格。如果有并列,则输出标签出现次数平均值最小的那个,题目保证这样的用户没有并列。若不足3人,则用-补齐缺失,例如mike jenny -就表示只有2人。

输入样例:

5
bob 11 101 102 103 104 105 106 107 108 108 107 107
peter 8 1 2 3 4 3 2 5 1
chris 12 1 2 3 4 5 6 7 8 9 1 2 3
john 10 8 7 6 5 4 3 2 1 7 5
jack 9 6 7 8 9 10 11 12 13 14

输出样例:

jack chris john

做法:

1.收集数据,对标签去重

2.排序

3.输出答案

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <set>using namespace std;const int N = 110;struct People
{string name;int sum,cnt;bool operator<(const People t) const//排序规则{if(cnt != t.cnt) return cnt > t.cnt;return (double)sum/cnt < (double)t.sum/t.cnt;}
}people[N];unordered_map<int,int> ha;
int main()
{int n = 0;cin >> n;for(int i = 0;i < n;i++){int k = 0,cnt = 0;string name;cin >> name >> k;people[i] = {name,k,0};if(i) ha.clear();while(k--){int t = 0;cin >> t;ha[t];//去重}people[i].cnt = ha.size();}sort(people,people + n);people[n].name = people[n + 1].name = people[n + 2].name = "-";n += 3;for(int i = 0;i < 3;i++)cout << people[i].name << (i == 2 ? '\n' : ' ');return 0;
}

结果 :

相关文章:

  • 众生度尽,方证菩提,地狱不空,誓不成佛;男人一定要帅,像地藏王菩萨一样
  • 张宇高数一学习笔记-第一讲-函数极限与连续(1)
  • 移除元素(leetcode)
  • HarmonyOS NEXT应用开发之大文件拷贝案例
  • 提升零售行业竞争力的信息抽取技术应用与实践
  • 深入挖掘C语言之——枚举
  • [Linux] 进程间通信基础
  • Java安全 反序列化(1) URLDNS链原理分析
  • Linux下使用ntpdate进行时间同步
  • 代码随想录训练营第48天 | LeetCode 121. 买卖股票的最佳时机、​​​​​​LeetCode 122.买卖股票的最佳时机II
  • 【Linux】进程优先级
  • 【工具】Mermaid + 大模型画流程图
  • 第十三届蓝桥杯省赛CC++ 研究生组
  • 二级Java程序题--02简单应用:源码大全(01-27)
  • 5_springboot_shiro_jwt_多端认证鉴权_禁用Cookie
  • [nginx文档翻译系列] 控制nginx
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS实用技巧
  • js对象的深浅拷贝
  • JS实现简单的MVC模式开发小游戏
  • JS专题之继承
  • k个最大的数及变种小结
  • Laravel 菜鸟晋级之路
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP的Ev教程三(Periodic watcher)
  • python学习笔记 - ThreadLocal
  • swift基础之_对象 实例方法 对象方法。
  • Vue组件定义
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从零开始在ubuntu上搭建node开发环境
  • 前端临床手札——文件上传
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 王永庆:技术创新改变教育未来
  • 责任链模式的两种实现
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • !$boo在php中什么意思,php前戏
  • # C++之functional库用法整理
  • $.ajax()方法详解
  • (4.10~4.16)
  • (翻译)terry crowley: 写给程序员
  • (三)uboot源码分析
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)80c52学习之旅-起始篇
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)可以带来幸福的一本书
  • (转载)深入super,看Python如何解决钻石继承难题
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .gitignore文件—git忽略文件
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net mvc总结
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net和php怎么连接,php和apache之间如何连接
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET是什么