天梯赛 L2-021 点赞狂魔 (25 分)

本博客介绍了一道算法题目,属于较为简单的L2级别。主要涉及如何记录和处理用户点赞信息,包括姓名、总点赞数、点赞的标签总数和点赞过的标签数。通过使用结构体存储用户信息,并利用set进行去重和计数,最后通过自定义cmp函数进行排序。排序依据是点赞标签数优先,其次为点赞次数。代码实现中需要注意防止n小于三的情况导致输出格式错误。
摘要由CSDN通过智能技术生成

题目链接

思路

这道题在L2里属于偏简单的一道,数据范围很友好,倾向于使用逻辑而非算法.但想要比较轻松的完成这道题目还是需要一些stl使用经验的.

对于一个用户,有几个需要记录的属性:

  • 姓名,用于输出
  • 总点赞数,用于确定输入标签的数量,以及确定输出顺序的次要因素
  • 点赞的标签总数,确定输出顺序的主要因素
  • 点赞过的标签数,用于去重.

实现过程

对于一个用户的属性,用一个结构体可以轻松容纳;

姓名和点赞数输入都会给出,存下来就行;

在输入用户点赞的标签时,边判重边累加其点赞过的标签总数即可.

判重我使用了set,根据其唯一性判断标签是否存在过,未存在过答案+1.将其标记为存在(插入set中).标签友好的数据范围也可以用bool数组来判断,记得每次重新声明或者memset就行.

在全部输入和计算完成后,用sort加上自己写的cmp函数排序即可.

排序优先按照点赞标签数从高到低,同标签数按点赞次数从小到大排序就行(题目那描述我有点没看懂…),顺序别反了.

输出前还要判断下n是否小于三个,如果小于空位要补上-.还要注意行尾不能有多余空格的输出格式.

代码实现

#include <bits/stdc++.h>
using namespace std;

const int N = 105;
struct Node//存用户的结构体
{
   
    string name;//用户名
    int num;//用户点赞总数
    set<int> tag;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值