Task A3 PAT考试排名汇总

news/2024/11/28 23:42:10/文章来源:https://www.cnblogs.com/yuncloud517/p/18575463

【题目描述】 PTA(数据结构与算法题目集 7-41)
计算机程序设计能力考试(Programming Ability Test,简称 PAT)旨在通过统一组织的在线考试及
自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,
为企业选拔人才提供参考标准。 每次考试会在若干个不同的考点同时举行,每个考点用局域网,产
生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。现在就请你写一个
程序自动归并各个考点的成绩并生成总排名表。
【输入格式】
输入的第一行给出一个正整数 N(≤100),代表考点总数。随后给出 N 个考点的成绩,格式为:首
先一行给出正整数 K(≤300),代表该考点的考生总数;随后 K 行,每行给出 1 个考生的信息,包
括考号(由 13 位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。
【输出格式】
首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、
最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从 1 到 N 编号。考生的输出须
按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。
【输入样例】
2 5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
【输出样例】
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4

本题运用到了algorithm里的sort函数,以及结构体的运用,逻辑简单。

  1. 定义学生结构体,有id,成绩,考点排名,总排名,考点编号等;
  2. 处理每个考点的数据,对每个考点的考生信息存储在一个局部变量中,进行按成绩降序,按考号升序进行排序,然后计算每个考点在改考点内的排名;
  3. 将所有考点的数据合并到一个全局变量中;
  4. 对所有考点的数据进行一起全局排序,以确定最终排名;
  5. 输出结果,每个考生的信息,考号,最终排名,考点编号,以及在该考点的排名。

关于sort函数和vetctor容器的用法可以查看菜鸟教程:https://www.runoob.com/cplusplus/cpp-libs-algorithm.html 和 https://www.runoob.com/cplusplus/cpp-vector.html。
下面是完整的代码:

# include<iostream>
# include<vector>
# include<algorithm> 
using namespace std;struct Student{long long id; //考生号int score; //考生成绩int Rank; //考生在本考场的排名 int index; //考点编号 
}; //sort函数中的比较函数 
bool CB_ScoreAndId(const Student &a, const Student &b)
{if(a.score != b.score) return a.score > b.score; //按成绩降序排列return a.id < b.id; //如果成绩相同,按考号升序排序 
}
int main(){//考点总数int N;cin >> N; //学生的总人数 vector<Student> students; //对每个考点遍历  for(int i = 0; i < N; i++){ //每个考点的总人数 int number;cin >> number;//每个考点的学生 vector<Student> testStudent(number); for(int j = 0; j < number; j++){cin >> testStudent[j].id >> testStudent[j].score; //输入每个考生的考生号以及成绩testStudent[j].index = i + 1; //每个考生的考点编号 }//开始对每个考点的学生排序操作sort(testStudent.begin(), testStudent.end(), CB_ScoreAndId);//计算每个学生在当前考点的排名int rank = 1; for(int j = 0; j < number; j++ ){if(j > 0 && testStudent[j].score < testStudent[j-1].score){rank = j + 1; //分数不同则排名递增 }testStudent[j].Rank = rank; } //将当前考点的学生加入到学生总列表 students.insert(students.begin(),testStudent.begin(), testStudent.end());}//对所有考点的学生排序 sort(students.begin(), students.end(), CB_ScoreAndId); //输出考点总数cout << students.size() << endl;//输出每个学生的详细信息int overRank = 1; //最终排名for(size_t i = 0; i < students.size(); i++){if(i > 0 && students[i].score < students[i-1].score){overRank = i+1;}cout << students[i].id << " " << overRank << " " << students[i].index << " " << students[i].Rank <<endl;} system("pause");return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843151.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux物理内存管理

1 物理内存初始化——引导分配器memblockLinux内核启动时,先要初始化物理内存,这个阶段的作用主要是确定物理内存大小,哪些是可用的?哪些是预留的?完成这一阶段工作的是memblock引导分配器。内核启动时初始化物理内存的处理函数调用路径大概是(基于Linux 5.10.1源码查看):…

Threejs入门-灯光

在 Three.js 中,灯光是非常重要的元素之一,它能够模拟现实世界中的光照效果,帮助我们打造更加真实的三维场景。灯光的种类和配置方式可以影响整个场景的视觉效果,在不同的应用中,灯光的使用非常关键。 灯光概述 Three.js 提供了几种常见的光源类型:环境光(Ambient Light…

《Django 5 By Example》阅读笔记:p383-p387

《Django 5 By Example》学习第 14 天,p383-p387 总结,总计 5 页。 一、技术总结 1. asynchronous task(异步任务) 对于异步任务,书中使用的是 celery 和 RabbitMQ,这也是平时工作中的主流用法。 (1) celery Python 使用的 celery 包的名字也是 celery。 2. RabbitMQ (1) 拉…

思维模型:六顶思考帽,从不同角度思考问题,提升思维认知

思维模型:六顶思考帽思维模型,从不同角度思考分析问题,提升思维认知介绍 六顶思考帽(Six Thinking hats) ,由爱德华德博诺博士提出的一种思维认知模型工具。 它是通过不同颜色的帽子来代表六种不同的思维方式,帮助人们从多个角度全面分析和解决问题,提升认知。这六种颜…

12.SpringCloudAlibabaSentinel实现熔断和限流

1.Sentinel 1.1 官网 sentinel官网,类似Spring Cloud Circuit Breaker。 1.2 是什么 面向分布式、多语言异构化服务架构的流量治理组件。 1.3 下载地址 https://github.com/alibaba/Sentinel/releases 1.4 能干吗 Sentinel以流量为切入点,从流量控制、流量路由、熔断降级、系…

视觉多模态理解模型基础

1. 视觉多模态简介 视觉多模态一般涵盖2个要点:视觉表征 以及 视觉与自然语言的对齐(Visual Language Alignment)或融合。1.1. 视觉表征 视觉表征是指:将图像信息转化为深度学习模型可以处理的特征向量或向量序列的过程。具体来说,它包含以下2点:合理建模视觉输入特征:这…

Padavan 使用VNT

openwrt ppoe拨号有问题,实在忍受不了,只能换回稳定的Padavan下载二进制vnt放至/etc/storage添加自启脚本/etc/storage/vnt-cli -s tcp://x.x.x.x:29872 -k passwd --use-channel relay -n R3P -o 192.168.123.0/24 -i 10.1.50.0/24,10.1.1.4 -i 10.2.110.0/24,10.1.1.223 …

【架构】统一认证中心的架构设计与实现(一)

一、背景二、认证授权概念2.1 认证2.2 授权三、一些名词四、常见的认证方案4.1 JWT4.2 OAuth2五、SSO协议5.1 OpenID Connect5.2 SAML 2.05.3 CAS六、RBAC一、背景 一般在一个公司内部可能有多个系统,比如OA,财务系统,CMS,ERP,营销系统,客服中心,项目管理系统,代码管理…

Listener内存马

概述 Listener是Java Web App中的一种事件监听机制,用于监听Web应用程序中产生的事件,例如,在ServletContext初始化完成后,会触发contextInitialized事件,实现了ServletContextListener接口的Listener就可以接收到事件通知,可以在内部做一些初始化工作,如加载配置文件,…

一种小资源情况下RDS数据实时同步StarRocks方案

使用一台4C8 G服务器轻松实现2个MySQL实例中通过负责分库分表规则之后的5000多张表的数据实时同步到StarRocks一、背景 目前需要将阿里云RDS数据库的数据同步到自建的StarRocks集群。之前使用DolphinScheduler通过定时调度Datax任务,将数据同步到StarRocks集群中,但是随着业务…

Elasticsearch常用查询及Kibana使用

Elasticsearch常用查询及Kibana使用 背景 搭建好Nginx => Filebeat => Logstash => Elasticsearch的日志获取通道后,通过jmeter配置产生10000条请求查看jmeter配置查看聚合报告Devtools工具进行查询查询reponseTime 90%,95%,99%分割线GET nginx-2024.11.28/_search…

Logstash安装及传输日志

Logstash安装及传输日志 Logstash安装按照官方文档安装启动logstash 方法1启动命令systemctl start logstash方法2 查看logstash启动配置先执行命令查看启动文件位置,可看出启动文件位置为/etc/systemd/system/logstash.servicesystemctl status logstash查看/etc/systemd/sys…