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

【华为OD机试】 选修课

题目描述
现有两门选修课,每门选修课都有一部分学生选修,每个学生都有选修课的成绩,需要你找出同时选修了两门选修课的学生,先按照班级进行划分,班级编号小的先输出,每个班级按照两门选修课成绩和的降序排序,成绩相同时按照学生的学号升序排序。

输入描述
第一行为第一门选修课学生的成绩,

第二行为第二门选修课学生的成绩,

每行数据中学生之间以英文分号分隔,每个学生的学号和成绩以英文逗号分隔,

学生学号的格式为8 88位数字

2位院系编号+入学年份后2位+院系内部1位专业编号+所在班级3位学号

学生成绩的取值范围为[0 , 100 0,1000,100]之间的整数,

两门选修课选修学生数的取值范围为[1 − 2000 1-20001−2000]之间的整数。

输出描述
同时选修了两门选修课的学生的学号,如果没有同时选修两门选修课的学生输出NULL,

否则,先按照班级划分,班级编号小的先输出,每个班级先输出班级编号(学号前五位),

然后另起一行输出这个班级同时选修两门选修课的学生学号,学号按照要求排序(按照两门选修课成绩和的降序,成绩和相同时按照学号升序学生之间以英文分号分隔。

样例
输入

01202021,75;01201033,95;01202008,80;01203006,90;01203088,100
01202008,70;01203088,85;01202111,80;01202021,75;01201100,88

输出

01202
01202008;01202021
01203
01203088

说明

同时选修了两选修课的学生01202021 、 01202008 、 01203088 01202021、01202008、0120308801202021、01202008、01203088,这三个学生两门选修课的成绩和分别为150 、 150 、 185 150、150、185150、150、185,

01202021 、 01202008 01202021、0120200801202021、01202008届于01202 0120201202班的学生,按照成绩和降序,成绩相同时按学号升序输出的结果为01202008 ; 01202021 01202008;0120202101202008;01202021,

01203088 0120308801203088属于01203 0120301203班的学生,按照成绩和降序,成绩相同时按学号升序输出的结果为0120308 01203080120308,

01202 0120201202的班级编号小于01203 0120301203的班级编号,需要先输出。

输入

01201022,75;01202033,95;01202018,80;01203006,90;01202066,100
01202008,70;01203102,85;01202111,80;01201021,75;01201100,88

输出

NULL

说明

没有同时选修了两门选修课的学生,输出NULL
 

代码:

#include <bits/stdc++.h>
using namespace std;struct student {string num;int fs;
};vector<student> ac;bool cmp1( student A,  student B) {return A.num < B.num;
}bool cmp2( student A,  student B) {string s1 = A.num.substr(0, 5), s2 = B.num.substr(0, 5);if (s1 == s2) {if (A.fs == B.fs) {return A.num < B.num;}return A.fs > B.fs;}return s1 < s2;
}int main() {int c = 0;string s;for (int i = 0; i < 2; i++) {cin >> s;s += ";";vector<string> vs;int len = s.size();string tmp;for (int i = 0; i < len; ++i) {if (s[i] == ';') {vs.emplace_back(tmp);tmp = "";} else {tmp += s[i];}}for (string v : vs) {int p = v.find(",");int a;istringstream(v.substr(p + 1)) >> a;ac.push_back({v.substr(0, p), a});}}sort(ac.begin(), ac.end(), cmp1);vector<student> students;for (int i = 0; i < ac.size(); ++i) {int j = i;student student = {ac[i].num, 0};int cnt = 0;while (j < ac.size() && ac[j].num == ac[i].num) {student.fs += ac[j].fs;cnt += 1;j += 1;}if (cnt == 2) {students.push_back(student);}i = j - 1;}if (students.empty()) {cout << "NULL" << endl;return 0;}sort(students.begin(), students.end(), cmp2);// 按照题目要求输出for (int i = 0; i < students.size(); ++i) {// 先输出每个班级号string t = students[i].num.substr(0, 5);cout << t << "" << endl;int j = i + 1;while (j < students.size() && students[j].num.substr(0, 5) == t) {j += 1;}for (int k = i; k < j; ++k) {if (k != i) {cout << ";";}cout << students[k].num;}cout << endl;i = j - 1;}return 0;
}

相关文章:

【华为OD机试】 选修课

题目描述 现有两门选修课&#xff0c;每门选修课都有一部分学生选修&#xff0c;每个学生都有选修课的成绩&#xff0c;需要你找出同时选修了两门选修课的学生&#xff0c;先按照班级进行划分&#xff0c;班级编号小的先输出&#xff0c;每个班级按照两门选修课成绩和的降序排序…...

225. 用队列实现栈

请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int to…...

IDEA将本地项目上传到码云

一、创建本地仓库并关联 用IDEA打开项目&#xff0c;在菜单栏点击vcs->create git repository创建本地仓库&#xff0c; 选择当前项目所在的文件夹当作仓库目录。 二、将项目提交本地仓库 项目名右键就会出现“GIT”这个选项->Add->Commit Directory, 先将项目add…...

Ubuntu更改虚拟机网段(改成桥接模式无法连接网络)

因为工作需要&#xff0c;一开始在安装vmware和虚拟机时&#xff0c;是用的Nat网络。 现在需要修改虚拟机网段&#xff0c;把ip设置成和Windows端同一网段&#xff0c;我们就要去使用桥接模式。 环境&#xff1a; Windows10、Ubuntu20.04虚拟机编辑里打开虚拟网络编辑器&#…...

谷粒商城第七天-商品服务之分类管理下的删除、新增以及修改商品分类

目录 一、总述 1.1 前端思路 1.2 后端思路 二、前端部分 2.1 删除功能 2.2 新增功能 2.3 修改功能 三、后端部分 3.1 删除接口 3.2 新增接口 3.3 修改接口 四、总结 一、总述 1.1 前端思路 删除和新增以及修改的前端无非就是点击按钮&#xff0c;就向后端发送请求…...

Redis学习路线(1)—— Redis的安装

一、NoSQL SQL VS NoSQL 1、名称 SQL 主要是指关系数据库。NoSQL 主要是指非关系数据库。 2、存储结构 SQL 是结构化的数据库&#xff0c;以表格的形式存储数据。NoSQL 是非结构化的数据库&#xff0c;以Key-Value&#xff08;Redis&#xff09;&#xff0c;JSON格式文档&…...

《MySQL 实战 45 讲》课程学习笔记(五)

数据库锁&#xff1a;全局锁、表锁和行锁 根据加锁的范围&#xff0c;MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁。 MySQL 提供了一个加全局读锁的方法&#xff0c;命令是 Flush tables with read lock (FTWRL)。当你需要…...

使用GADL对高程数据进行填洼

对于DEM数据中存在的洼地&#xff08;sink&#xff09;问题&#xff0c;可以使用GADL&#xff08;Geospatial Data Abstraction Library&#xff09;中的功能进行填洼操作。GADL是一个开源的GIS库&#xff0c;提供了许多对地理空间数据进行处理和分析的功能。 下面是使用GADL对…...

Spring Boot集成Swagger3.0,Knife4j导出文档

文章目录 Spring Boot集成Swagger3.0,Knife4j导出文档效果展示如何使用简要说明添加依赖添加配置类测试接口token配置位置 官网 说明情况 demo Spring Boot集成Swagger3.0,Knife4j导出文档 效果展示 如何使用 简要说明 Knife4j的前身是swagger-bootstrap-ui,前身swagger-boo…...

在.NET Framework中的连接字符串ConnectionStrings属性

在.NET Framework中&#xff0c;ConfigurationManager.ConnectionStrings属性是用来访问在Visual Studio IDE应用程序配置文件中配置的数据库连接字符串的。每个连接字符串在Visual Studio IDE配置文件中都以<add>元素的形式出现&#xff0c;该元素是<connectionStrin…...

kafka消费报错卡死:内存溢出OutOfMemoryError: Java heap space

文章目录 现象排查解决 现象 我们信控平台使用Java语言开发&#xff0c;Spring Cloud微服务架构&#xff0c;采用容器化部署&#xff0c;所有服务都部署在docker里面&#xff0c;使用docker-compose进行管理&#xff0c;使用portainer进行监控平台部署客户现场后&#xff0c;一…...

mac卸载与安装指定版本node

一、查看当前node.js版本 node -v 二、卸载当前node.js # 这里是卸载npm的 sudo npm uninstall npm -g# 这里是用来删除node创建的各种文件夹 sudo rm -rf /usr/local/lib/node sudo rm -rf /usr/local/lib/node_modules sudo rm -rf /var/db/receipts/org.nodejs.* sudo rm…...

机器学习深度学习——Dropout

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——权重衰减 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 Drop…...

Intel和AMD 与 x86,ARM,MIPS有什么区别?

先说amd和intel amd和Intel这俩公司的渊源很深&#xff0c;早期时Intel先是自己搞了个x86架构&#xff0c;然后amd拿到了x86的授权也可以自己做x86了。接着intel向64位过渡的时候自己搞了个ia64&#xff08;x64架构&#xff09;但是因为和x86架构不兼容市场反应极差&#xff0…...

QT编写的串口助手

QT编写的串口助手 提前的知识 创建UI界面工程 找帮助文档 添加串口的宏...

C语言字符串的处理

用惯了Java C#这些语言&#xff0c;C语言中处理字符串还是有些不习惯的&#xff0c;所以这里写一下学习笔记。 C中字符串就是字符数组&#xff0c;是指向字符的指针&#xff0c;并且以空字符 \0 结尾&#xff0c;字符串作为函数的参数传递时一般使用指针类型&#xff0c;使用数…...

Docker 阿里云容器镜像服务

阿里云-容器镜像服务ACR 将本地/服务器docker image&#xff08;镜像&#xff09;推送到 阿里云容器镜像服务仓库 1. 在容器镜像服务ACR中创建个人实例 2. 进入个人实例 > 命名空间 创建命名空间 3. 进入个人实例 > 镜像仓库 创建镜像仓库 4. 进入镜像仓库 > 基本信…...

10kV 电力电缆交流耐压试验方案

...

【雕爷学编程】MicroPython动手做(20)——掌控板之三轴加速度6

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

链路 聚合

静态链路聚合&#xff1a;多数内网使用 。非物理直连建议与BFD联动 动态链路聚合LACP&#xff1a;是公有协议、内网、二层专线接口都能使用&#xff0c;现网多数使用此方式链路 聚合 PAGP&#xff1a;思科私有协议&#xff0c;只支持思科设备使&#xff0c;现网多数不用...

半导体制造中的ProcessJob与Control Job:从定义到实战避坑指南

半导体制造中的ProcessJob与Control Job&#xff1a;从定义到实战避坑指南 在半导体制造的高精度世界里&#xff0c;每一片晶圆的流转都像一场精密编排的交响乐。而ProcessJob&#xff08;PJ&#xff09;和Control Job&#xff08;CJ&#xff09;就是这场演奏中不可或缺的指挥…...

保姆级教程:用PtitPrince的RainCloud函数,5步搞定分组数据可视化

5步精通RainCloud Plot&#xff1a;用PtitPrince实现专业级分组数据可视化 第一次看到同事用雨云图展示A/B测试结果时&#xff0c;我被这种"既见森林又见树木"的呈现方式震撼了——左侧的密度曲线如山脉般起伏&#xff0c;中间的箱线图标出关键分位点&#xff0c;右侧…...

忍者像素绘卷微信小程序接入:用户提示词历史+生成图云存储方案

忍者像素绘卷微信小程序接入&#xff1a;用户提示词历史生成图云存储方案 1. 项目背景与核心价值 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站&#xff0c;将16-Bit复古游戏美学与现代AI图像生成技术完美结合。这款工具特别适合创作具有忍者主题和复古像素…...

Qwen3-ASR-0.6B效果展示:金融客服录音(专业术语+缩略语)识别术语表匹配

Qwen3-ASR-0.6B效果展示&#xff1a;金融客服录音&#xff08;专业术语缩略语&#xff09;识别术语表匹配 金融客服电话录音里&#xff0c;客户和坐席的对话常常像在说“天书”。一会儿是“LPR”&#xff0c;一会儿是“T0”&#xff0c;还有各种产品代码和内部术语。把这些录音…...

Vision Master OpenCV 2.0 深度评测:新增YOLOv5、语义分割等ONNX模型,实战性能提升有多大?

Vision Master OpenCV 2.0 深度评测&#xff1a;ONNX模型实战性能全解析 当计算机视觉开发工具开始拥抱ONNX生态&#xff0c;技术选型的边界正在被重新定义。Vision Master OpenCV 2.0的发布恰逢其时&#xff0c;它不仅将YOLOv5、语义分割等前沿模型集成到可视化流程中&#xf…...

Qwen2.5-VL视觉定位模型支持多目标检测:一句话同时定位‘人和汽车’,效果惊艳

Qwen2.5-VL视觉定位模型支持多目标检测&#xff1a;一句话同时定位"人和汽车"&#xff0c;效果惊艳 1. 视觉定位技术的新突破 在计算机视觉领域&#xff0c;视觉定位&#xff08;Visual Grounding&#xff09;技术正经历着革命性的进步。传统的目标检测方法需要预先…...

RTL8201F PHY芯片替换调试:从时钟异常到Ping通实战

1. 低成本PHY芯片替换的背景与挑战 最近接手了一个嵌入式以太网项目&#xff0c;甲方对成本控制非常严格&#xff0c;要求我们把原本使用的LAN8742 PHY芯片替换成更便宜的RTL8201F。这个需求听起来简单&#xff0c;但实际操作起来却遇到了不少坑。RTL8201F确实便宜不少&#xf…...

告别卡顿!用MobileNetv2+MPPTSNet-EC在树莓派上跑实时语义分割(附完整配置与性能测试)

树莓派实战&#xff1a;MobileNetv2MPPTSNet-EC实时语义分割全流程解析 当你在树莓派上第一次看到摄像头画面被实时分割成不同语义区域时&#xff0c;那种成就感绝对值得记录。本文将带你完整实现从模型选择到部署优化的全流程&#xff0c;用MobileNetv2MPPTSNet-EC这套组合拳&…...

05. 微交互设计模式解析:让界面更有生命力

05. 微交互设计模式解析&#xff1a;让界面更有生命力 引言 微交互是用户与界面之间的小互动&#xff0c;它们虽然微小&#xff0c;却能给用户带来巨大的愉悦感。作为一名把代码当散文写的 UI 匠人&#xff0c;我始终认为&#xff1a;好的微交互不是简单的动画效果&#xff0c;…...

数据库工具集成与自动化:awesome-db-tools 中的工作流优化终极指南

数据库工具集成与自动化&#xff1a;awesome-db-tools 中的工作流优化终极指南 【免费下载链接】awesome-db-tools Everything that makes working with databases easier 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-db-tools awesome-db-tools 是一个社区驱…...