首页 > 编程语言 >L2-021 点赞狂魔(25分) c++代码

L2-021 点赞狂魔(25分) c++代码

时间:2024-03-25 12:30:13浏览次数:33  
标签:25 int 标签 c++ 107 021 点赞 include id

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

输入格式:

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

输出格式:

统计每个人点赞的不同标签的数量,找出数量最大的前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

代码: 

//#include<iostream>
//#include<cstring>
//#include<cmath>
//#include<algorithm>
//#include<ctype.h>
//#include<stdio.h>
//#include<map>
#include<bits/stdc++.h>
using namespace std;

struct people{
	string name;//名字 
	int avg;//标签出现次数 
	set<int> id;//点赞的标签 
}a[105];

bool cmp(people a,people b){//排序规则 
	if(a.id.size()==b.id.size()) return a.avg<b.avg;//并列就按照标签出现次数排 
	else return a.id.size()>b.id.size();//不并列按照标签数量排 
}

int main(){
	int n;
	int num;//输入的标签 
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i].name>>a[i].avg;
		for(int j=0;j<a[i].avg;j++){
			cin>>num;
			a[i].id.insert(num); 
		}
	}
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++){
		if(i==0) cout<<a[i].name;
		else cout<<" "<<a[i].name;
		if(i==2) break;
	}
	if(n<3){
		for(int i=n;i<3;i++) cout<<" -";
	}
	return 0;
}

标签:25,int,标签,c++,107,021,点赞,include,id
From: https://blog.csdn.net/REIDIO/article/details/136994591

相关文章

  • L2-022 重排链表(25分) c++代码
    给定一个单链表 L1​→L2​→⋯→Ln−1​→Ln​,请编写程序将链表重新排列为 Ln​→L1​→Ln−1​→L2​→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (......
  • Base64编解码及C++代码实现
    1.Base64是什么?        Base64是一种二进制到文本的编码方式。如果要更具体一点的话,可以认为它是一种将byte数组编码为字符串的方法,而且编码出的字符串只包含ASCII基础字符。        例如字符串mickey0380对应的Base64为bWlja2V5MDM4MA==。其中那个=......
  • C++ | 剪枝(DFS)lanqiao OJ 2942
     上一篇我们已经分享了DFS的学习,剪枝相当于对部分DFS进行优化正常用DFS写,会遍历每一种情况,因此要判断他的合法性,并且在第十个检测点会超时,用剪枝后,这道题就可以过啦。//不剪枝的方法#include<bits/stdc++.h>usingnamespacestd;constintN=15;inta[N],n;v......
  • C++类的构造函数和析构函数
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.构造函数(Constructor)2.析构函数(Destructor):3.构造函数与析构函数的调用顺序:4.注意事项:5.示例总结1.构造函数(Constructor)**定义:**构造函数是一种特殊的成员函数,用于在创建对象时初始化......
  • Oracle-12541无监听或者链接一直未响应
    近日Oracle服务器断电重启后服务挂了,现记录下主要的修复步骤1.检查磁盘空寂是否股够df-h2.服务挂载并启动服务器登录oracle帐号依次输入下列命令:sqlplus /assysdbashutdownimmedicatestartup3.服务启动测试退出linux终端,重新打开登陆sqlplus输入帐号/秘密:system......
  • 20211102尹子扬DER编码
    二进制编码代码如下(只列举一个,其他类似)点击查看代码echo-n"CN"|od-tc-tx1创建一个der文件点击查看代码touch20211102.der按照要求编译文件点击查看代码echo-n-e"\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E">20211102.deropensslasn1pa......
  • C++开发基础——类对象与构造析构
    一、基础概念类:用户自定义的数据类型。对象:类类型的变量,类的实例。类的成员:成员变量和成员函数。成员变量:类中定义的变量。成员函数:类中定义的函数。定义类的代码样例:classClassName{//members};//类定义的右花括号后面必须有分号类的访问修饰符:public、private......
  • C++开发基础——指针与引用
    一,关于指针1.指针的基础概念指针是可存储地址的变量,存储在指针中的地址可以是变量或者其他数据的地址。指针不仅仅是指向某地址,指针还关注指向该地址的数据类型。例如:long*num_ptr{};这里的num_ptr指针今后只能存储long类型的变量地址,尝试用它存储非long类型的变量地址......
  • 中考英语首字母快速突破016-2021上海长宁英语二模-Coping Tips for Impatience-应对不
    PDF格式公众号回复关键字:ZKSZM016原文​Impatientpeopleareoftenseenasproudandself-important.Beingimpatientcanaffectyourrelationshipsatworkandathomenegatively(有害地).Peoplewillsenseangerfromyouandnotlike(71)dwithyouif......
  • C/C++练习
    1.数组升序#include<iostream>usingnamespacestd;//冒泡排序voidbubbleSort(int*arr,intlen){ for(inti=0;i<len-1;i++){ for(intj=0;j<len-1-i;j++){ if(arr[j]>arr[j+1]){ inttmp=arr[j]; arr[j]=arr[j+......