【PTA】点赞狂魔

Bertha 。 2023-07-04 06:09 91阅读 0赞

题目重述

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

输入样例:

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

输出样例:

  1. jack chris john

题解

去重+结构体排序
去重可以偷懒,利用set的特性

结构体排序的时候,要注意的是,当点赞的标签种类并列式,总点赞数越小越靠前。

C++ AC

  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. struct node{
  5. string name;
  6. int cnt;
  7. int num;
  8. };
  9. node nds[105];
  10. set<int> s;
  11. bool cmp(node n1,node n2)
  12. {
  13. if(n1.cnt==n2.cnt)
  14. {
  15. return n1.num<n2.num;
  16. }
  17. return n1.cnt>n2.cnt;
  18. }
  19. int main()
  20. {
  21. ios::sync_with_stdio(false);
  22. int n,tmp;
  23. cin>>n;
  24. if(n<=0)
  25. {
  26. return 0;
  27. }
  28. for(int i=0;i<n;i++)
  29. {
  30. cin>>nds[i].name;
  31. cin>>nds[i].num;
  32. for(int j=0;j<nds[i].num;j++)
  33. {
  34. cin>>tmp;
  35. s.insert(tmp);
  36. }
  37. nds[i].cnt=s.size();
  38. s.clear();
  39. }
  40. sort(nds,nds+n,cmp);
  41. if(n<3)
  42. {
  43. cout<<nds[0].name;
  44. for(int i=1;i<n;i++)
  45. {
  46. cout<<" "<<nds[i].name;
  47. }
  48. for(int i=0;i<3-n;i++)
  49. {
  50. cout<<" -";
  51. }
  52. }
  53. else
  54. {
  55. cout<<nds[0].name;
  56. for(int i=1;i<3;i++)
  57. {
  58. cout<<" "<<nds[i].name;
  59. }
  60. }
  61. return 0;
  62. }

发表评论

表情:
评论列表 (有 0 条评论,91人围观)

还没有评论,来说两句吧...

相关阅读

    相关 L2-021 分数

    微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到

    相关 PTA

    题目重述 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们

    相关 L2-021 (25 分)

    微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到

    相关 L2-021

    L2-021 点赞狂魔 (25 分) 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性