【华为OD】统一考试B\C卷真题 100%通过:开源项目热榜 C/C++实现

news/2025/2/13 6:41:04/

目录

题目描述:

示例1

示例2


题目描述:

        

某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。

数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热度根据这5个维度的加权求和进行排序。

表示热度值,

分别表示5个统计维度的权重,

分别表示5个统计维度的统计值。

榜单按照热度值降序排序,对于热度值相等的,按照项目名字转换为全小写字母后的字典序排序('a','b','c',...,'x','y','z')。

输入描述

第一行输入为N,表示开源项目的个数,

第二行输入为权重值列表,一共5个整型值,分别对应关注、收藏、fork、issue、MR的权重,权重取值

第三行开始接下来的N行为开源项目的统计维度,每一行的格式为:

name nr_watch nr_star nr_fork nr_issue nr_mr

其中name为开源项目的名字,由英文字母组成,长度

,其余5个整型值分别为该开源项目关注、收藏、fork、issue、MR的数量,数量取值

输出描述

按照热度降序,输出开源项目的名字,对于热度值相等的,按照项目名字转换为全小写字母后的字典序排序('a'>'b'>'c'>...>'x'>'y'>'z')。

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

4
8 6 2 8 6
camila 66 70 46 158 80
victoria 94 76 86 189 211
anthony 29 17 83 21 48
emily 53 97 1 19 218

输出

victoria
camila
emily
anthony

说明

排序热度值计算:

camila: 66*8 + 70*6 + 46*2 + 158*8 + 80*6 = 2784

victoria: 94*8 + 76*6 + 86*2 + 189*8 + 211*6 = 4158
anthony: 29*8 + 17*6 + 83*2 + 21*8 + 48*6 = 956

emily: 53*8 + 97*6 + 1*2 + 19*8 + 218*6 = 2468

根据热度值降序,得到结果。

示例2

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5
5 6 6 1 2
camila 13 88 46 26 169
grace 64 38 87 23 103
lucas 91 79 98 154 79
leo 29 27 36 43 178
ava 29 27 36 43 178

输出

lucas
grace
camila
ava
leo

说明

排序热度值计算:

camila: 13*5 + 88*6 + 46*6 + 26*1 + 169*2 = 1233

grace: 64*5 + 38*6 + 87*6 + 23*1 + 103*2 = 1299
lucas: 91*5 + 79*6 + 98*6 + 154*1 + 79*2 = 1829
leo: 29*5 + 27*6 + 36*6 + 43*1 + 178*2 = 922

ava: 29*5 + 27*6 + 36*6 + 43*1 + 178*2 = 922

根据热度值降序,对于leo和ava,热度值相等,按照字典序,ava排在leo前面,得到结果。

解题思路:

        根据规则来排序即可,要记得先把热度值计算好

代码实现:

#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;vector<int> readData() {vector<int> vec(5);for (int i = 0; i < 5; ++i) {cin >> vec[i];}return vec;
}int main() {int n;cin >> n;vector<int> values = readData();vector<string> res(n);map<string, vector<int>> all;for (int i = 0; i < n; ++i) {cin >> res[i];all[res[i]] = readData();}sort(res.begin(), res.end(), [&](const string &first, const string &second) {const auto &arr1 = all[first];const auto &arr2 = all[second];int t1 = 0, t2 = 0;for (int i = 0; i < 5; ++i) {t1 += arr1[i] * values[i];}for (int i = 0; i < 5; ++i) {t2 += arr2[i] * values[i];}if (t1 != t2) return t1 > t2;return first < second;});for (auto & x : res) {cout << x << endl;}return 0;}


http://www.ppmy.cn/news/1245338.html

相关文章

Flink 替换 Logstash 解决日志收集丢失问题

在某客户日志数据迁移到火山引擎使用 ELK 生态的案例中&#xff0c;由于客户反馈之前 Logstash 经常发生数据丢失和收集性能较差的使用痛点&#xff0c;我们尝试使用 Flink 替代了传统的 Logstash 来作为日志数据解析、转换以及写入 ElasticSearch 的组件&#xff0c;得到了该客…

[计算机网络]运输层概述

虽然我自己也不知道写在前面和前言有什么区别..... 这个系列其实是针对<深入浅出计算机网络>的简单总结,加入了一点个人的理解和浅薄见识,如果您有一些更好的意见和见解,欢迎随时协助我改正,感激不尽啦. 最近心态平和了不少, 和过去也完全做了个割舍吧,既然痛苦和压力的…

Windows系统 TexWorks 显示“Font Monaco not found.“

先双击MONACO.ttf文件完成安装&#xff0c;还是不行用以下方法解决&#xff1a; 解决方法&#xff1a;将Monaco.ttf后缀&#xff08;不一定非要这个格式的&#xff0c;可以自行尝试&#xff09;的字体文件解压&#xff0c;复制进texlive文件夹下的路径,例如&#xff1a; C:\t…

技术阅读周刊第第7️⃣期

技术阅读周刊&#xff0c;每周更新。 历史更新 20231013&#xff1a;第一期20231022&#xff1a;第二期20231027&#xff1a;第三期20231103&#xff1a;第四期20231107&#xff1a;第五期20231117&#xff1a;第六期 What is a JWT? Understanding JSON Web Tokens URL: http…

1140. 最短网络,prim算法,模板题

1140. 最短网络 - AcWing题库 农夫约翰被选为他们镇的镇长&#xff01; 他其中一个竞选承诺就是在镇上建立起互联网&#xff0c;并连接到所有的农场。 约翰已经给他的农场安排了一条高速的网络线路&#xff0c;他想把这条线路共享给其他农场。 约翰的农场的编号是1&#xf…

女公务员脱机玩转Python,怎么做到的?

更多高级的Python技术文章请关注微信公众号&#xff1a;愤怒的it男 一、写在前面的故事 今天我发现了一件很神奇的事情&#xff1a;一位很漂亮的美女公务员&#xff0c;坐在一台没有外网的电脑面前&#xff0c;优雅地敲着Python代码&#xff0c;而这台电脑装的还是32位win7这种…

Linux学习笔记6-串口应用

到现在为止都是在开发板上运行的裸机程序&#xff0c;相当于之前学习STM32单片机时走过的路&#xff0c;还没有真正进入到核心的驱动开发部分&#xff0c;但这都是基础&#xff0c;所以慢慢来不着急。 接下来进入串口通信的学习&#xff0c;和GPIO一样&#xff0c;也是和单片机…

2、用命令行编译Qt程序生成可执行文件exe

一、创建源文件 1、新建一个文件夹&#xff0c;并创建一个txt文件 2、重命名为main.cpp 3、在main.cpp中添加如下代码 #include <QApplication> #include <QDialog> #include <QLabel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QDi…