PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分)
PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分)
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。
每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。
现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。
输入格式:
输入的第一行给出一个正整数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
题目分析:看题上感觉是要使用归并排序,但我觉得有些麻烦,就用快排来解决了,注意处理分数相同时的情况,对于排名来说,只要让下一个元素的排名等于上一个元素的排名就好了,但对于将相同成绩的考生的考号按递增顺序排序,不仅仅要把最后两个元素互换,更要在所有成绩相同的学生中进行处理,可以在快速排序中增加这种情况,对于成绩相同的学生来说,始终将比他考好小的调整到他的前面,这样递归处理,最后得到的结果就是我们想要的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<malloc.h> struct Student
{
char Data[];
int Score;
int ExamPlace;
int Sort[];
}Students[];
int Table[];
void Swap(int i, int j)
{
int tmp = Table[i];
Table[i] = Table[j];
Table[j] = tmp;
}
void InitializeTable(int N)
{
for (int i = ; i < N; i++)
Table[i] = i;
}
void Quick_Sort(int start, int end)
{
if (start >= end - )
return;
int mid = (start + end) / ;
Swap(start, mid);
int k = start + ;
for (int j = start + ; j < end; j++)
{
if (Students[Table[j]].Score > Students[Table[start]].Score)
Swap(k++, j);
else if (Students[Table[j]].Score == Students[Table[start]].Score && strcmp(Students[Table[start]].Data, Students[Table[j]].Data) > )
Swap(k++, j);
}
Swap(start, k - );
Quick_Sort(start, k - );
Quick_Sort(k, end);
}
void Judget(int start, int end, int i, int sum)
{
for (int j = start; j < end; j++)
{
if (j > start && Students[Table[j]].Score == Students[Table[j - ]].Score)
{
Students[Table[j]].Sort[i] = Students[Table[j - ]].Sort[i];
}
else
Students[Table[j]].Sort[i] = j - sum;
}
}
int main()
{
int N, K;
scanf("%d", &N);
int sum = ;
int j = ;
InitializeTable();
for (int i = ; i < N; i++)
{
scanf("%d", &K);
for (int k = sum; k < sum + K; k++)
{
scanf("%s%d", Students[k].Data, &Students[k].Score);
Students[k].ExamPlace = i;
}
sum += K;
Quick_Sort(j, j + K);
Judget(j, j + K, , sum - K);
j = sum;
}
InitializeTable();
Quick_Sort(, sum);
Judget(, sum, , );
printf("%d\n", sum);
for (int i = ; i < sum; i++)
printf("%s %d %d %d\n", Students[Table[i]].Data, Students[Table[i]].Sort[]+, Students[Table[i]].ExamPlace+, Students[Table[i]].Sort[]+);
return ;
}
PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分)的更多相关文章
- PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)
PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...
- PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分)
PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市 ...
- PTA数据结构与算法题目集(中文) 7-29
PTA数据结构与算法题目集(中文) 7-29 7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条 ...
- PTA数据结构与算法题目集(中文) 7-28
PTA数据结构与算法题目集(中文) 7-28 7-28 搜索树判断 (25 分) 对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值.如果我 ...
- PTA数据结构与算法题目集(中文) 7-25
PTA数据结构与算法题目集(中文) 7-25 7-25 朋友圈 (25 分) 某学校有N个学生,形成M个俱乐部.每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈.一个学生可以同时属于若干 ...
- PTA数据结构与算法题目集(中文) 7-24
PTA数据结构与算法题目集(中文) 7-24 7-24 树种统计 (25 分) 随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类.请编写程序帮助研究人员统计每种树的数量,计算每种树 ...
- PTA数据结构与算法题目集(中文) 7-23
PTA数据结构与算法题目集(中文) 7-23 7-23 还原二叉树 (25 分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度. 输入格式: 输入首先给出正整数N(≤50) ...
- PTA数据结构与算法题目集(中文) 7-20
PTA数据结构与算法题目集(中文) 7-20 7-20 表达式转换 (25 分) 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个 ...
- PTA数据结构与算法题目集(中文) 7-9
PTA数据结构与算法题目集(中文) 7-9 7-9 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游 ...
- PTA数据结构与算法题目集(中文) 7-6
PTA数据结构与算法题目集(中文) 7-6 7-6 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时, ...
随机推荐
- ubuntu 安装flask+nginx+gunicorn 待定
第一步 先检查服务器环境 pip python3 mysql redis 能下就下,该升级就升级 第二步 如果你的flask程序在github上 请使用git clone 地址 下载下来(如果是私 ...
- 处理asp.net core连接mysql的一个异常Sequence contains more than one matching element
晚上在那里调程序,把mysql.data组件的nuget包进行了更新,前几天好好的程序,开始抛错,跟踪断点发现以下的异常: Unable to connect to any of the specif ...
- C++ 标准模板库(STL)-stack
主要介绍一下C++11版本中标准模板库中栈的用法,希望可以帮到需要用的人. #include <iostream> #include <stack> #include < ...
- Django中使用CORS实现跨域请求
跨域请求: 请求url包含协议.网址.端口,任何一种不同都是跨域请求. 1.安装cors模块 pip install django-cors-headers2.添加应用 INSTALLED_ ...
- C++ 指针偏移的理解
//题目:若有程序段int a[5] = { 1, 2, 3, 4, 5 }; int *p = (int *)(&a + 1); printf("%d,%d", *(a ...
- h5微信中视频禁止全屏
<video id="videoPlayer" v-show="isShowVideo" class="video" ref=&quo ...
- Win2012+Nginx+IIS+xxfpm(服务版)
这次做了一个项目部署在环境为win2012+nginx1.13.5+mysql5.6+php7的环境下,服务器是阿里云的 由于之前没有这种经验,遇到了点坑(据参考文章里说的这坑还有些年份了),最开始自 ...
- Centos7报Could not resolve host: mirrorlist.centos.org; Unknown error(VMware网络设置)
软件:VMware 12 Linux版本:centOS 7 网络设置:桥接模式 安装后ping百度网址时报错:Name or service not know,使用yum安装时报错:Could not ...
- 在ASP.NET MVC中如何预防Cookie的窃取攻击(转载)
Cookie Cookie is a small piece of data sent by a web server to a web browser. The browser stores thi ...
- [转载] 全局键盘钩子(WH_KEYBOARD)
为了显示效果,在钩子的DLL中我们会获取挂钩函数的窗体句柄,这里的主程序窗体名为"TestMain",通过FindWindow查找. KeyBoardHook.dll代码 libr ...