首页 > 其他分享 >Task A3 PAT考试排名汇总

Task A3 PAT考试排名汇总

时间:2024-11-28 23:43:57浏览次数:8  
标签:Task PAT int 考点 A3 score 考生 排名 testStudent

【题目描述】 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.htmlhttps://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;
} 


标签:Task,PAT,int,考点,A3,score,考生,排名,testStudent
From: https://www.cnblogs.com/yuncloud517/p/18575463

相关文章

  • Task01 课程简介,安装Installation && Task02 启航Getting Started
    Task01课程简介,安装Installation课程简介1.python是一种相当高级的语言,由著名的“龟叔”所创造。2.用处可以做日常任务,做网站,做网络游戏后台。3.缺点:无法写操作系统(C语言),手机应用(Java,Swift/objective-C),3D游戏(C,C++),其运行速度慢,以及代码无法加密。安装Installation1.在Window......
  • ###Python.task1&task2
    Python.task1&task2TASK1Install1.官网或者镜像源下载安装包并进行安装2.在终端检查是否安装成功时显示不是内部或外部命令,这是因为还未进行环境配置。在搜索栏搜索编辑,打开编辑系统环境变量。点“环境变量”,双击“path”,在对应界面中新增三个路径:(在已经安装好的conda配......
  • Task01&Task02学习笔记
    Task01:安装Python编程环境miniconda安装官方网站安装官方网址缺点:下载速度较慢镜像站安装Bing搜索tunamirrors清华软件开源软件镜像站MinicondaForWindows安装配置推荐JustMe(recommended)Clearthepackagecacheuponcompletion换源校园网联合镜像站在A......
  • 聪明办法学python task01&task02
    聪明办法学pythontask01&task02什么是pythonPython是一种高级、解释性、面向对象的编程语言怎么安装python-抖音视频链接:9.25复制打开抖音,看看【玩转PC的作品】Python的下载与安装#电脑技巧#电脑#...https://v.douyin.com/iDffruqV/d@a.Ag08/02mdn:///参考了一下......
  • task01
    task01:课程简介,安装Insatallation一、课程简介虽然在之前有过自学的经历,但看了聪明办法学python的第一节课后我仍获得了许多启发,所以在这里我会结合一些自身的感悟进行一些总结灵魂三问为什么学python什么是python怎么学python为什么学python全球范围内python的......
  • 聪明办法学python task01&task02
    什么是PythonPython是一种高级编程语言,它具有简洁、易读的语法。其代码风格注重可读性,通过使用缩进来表示代码块,而不是像其他语言(如C、Java)使用大括号。python的安装-抖音视频链接:9.25复制打开抖音,看看【玩转PC的作品】Python的下载与安装#电脑技巧#电脑#...https://v.......
  • 在ModelArts Studio基于Llama3-8B模型实现新闻自动分类
    应用场景在数字化时代,新闻的生成与传播速度不断刷新记录。在ModelArtsStudio大模型即服务平台(下面简称为MaaS),使用Llama3-8B模型框架可以实现新闻自动分类,能够高效处理和分类大量新闻内容。该解决方案可以应用于如下场景:新闻门户网站:自动将新闻内容归类到相应板块,如科技、......
  • BEA3026 Financial Modelling
    BEA3026FinancialModellingIndividualAssignment(100%ofTotal ModuleAssessment)Released: 12:00noonon 1st November 2024SubmissionDeadline: 12:00noonon9th December2024(Late Submission PenaltiesWillApply)Length: 3,500wordswithaperm......
  • Llama3.1 是怎么工作哒?原文翻译版
    了解Llama3.1如何工作——深入探讨模型流程原文标题:UnderstandHowLlama3.1Works—ADeepDiveIntotheModelFlow原作者:XiaojianYu原文链接:https://medium.com/@yuxiaojian/understand-how-llama3-1-works-a-deep-dive-into-the-model-flow-b149aba04bed翻译:岁月月......
  • AT_nikkei2019_2_qual_d Shortest Path on a Line 题解
    洛谷题目传送门AT题目传送门博客园可能食用更佳学校内部模拟赛出了这题,顺便来写下题解。惊奇的发现题解区居然全是建图跑最短路,这怎么行,所以这一篇题解并没有跑任何最短路,而是使用了线段树优化DP。考虑将建边区间按右端点从小到大排序,每次以右端点为枚举编号,记作\(x\),发......