PAT甲级真题 A1025 PAT Ranking
题目概述:Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several places, and the ranklists will be merged immediately after the test. Now it is your job to write a program to correctly merge all the ranklists and generate the final rank.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive number N (≤100), the number of test locations. Then N ranklists follow, each starts with a line containing a positive integer K (≤300), the number of testees, and then K lines containing the registration number (a 13-digit number) and the total score of each testee. All the numbers in a line are separated by a space.
Output Specification:
For each test case, first print in one line the total number of testees. Then print the final ranklist in the following format: registration_number final_rank location_number local_rank
The locations are numbered from 1 to N. The output must be sorted in nondecreasing order of the final ranks. The testees with the same score must have the same rank, and the output must be sorted in nondecreasing order of their registration numbers.
Sample Input:
2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
Sample Output:
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
题目大意:有N个考场,每个考场里有K个学生,依次输入这些学生的考号与成绩,并按照成绩由高到低(如果成绩相同则按字典序由低到高)排序,并依次输出该学生成绩的总排名,考场号,以及在考场的排名。
题解:使用结构体储存学生信息,我的结构体共有5个变量,当然也有用4个的
struct student
{
char number[105];
int countnumber;
int lanknumber;
int all;
int score;
};
大致思路为使用两次sort排序,先在本考场内进行一次排序,得出学生在考场的位序,其次在全部学生进行一次排序。cmp构造如下:
bool cmp(student a, student b)
{
if (a.score != b.score)
return a.score > b.score;
if (a.score == b.score)
return strcmp(a.number, b.number) < 0;
}
注意在PTA上提交时要加上cstring头文件,否则会编译错误
AC代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include <cstring>
using namespace std;
struct student
{
char number[105];
int countnumber;
int lanknumber;
int all;
int score;
};
bool cmp(student a, student b)
{
if (a.score != b.score)
return a.score > b.score;
if (a.score == b.score)
return strcmp(a.number, b.number) < 0;
}
int main()
{
struct student box[30005];
int count, m = 0, n = 0, now1 = 1, now2 = 1;
int everycount[105];
cin >> count;
for (int t = 0; t < count; t++)
{
cin >> everycount[m];
for (int t1 = 0; t1 < everycount[m]; t1++)
{
cin >> box[n].number >> box[n].score;
box[n].countnumber = m+1;
n++;
}
sort(box + n - everycount[m], box + n, cmp);
now1 = 1, now2 = 1;
for (int t3 = n - everycount[m]; t3 < n; t3++)
{
if (t3 != 0 && box[t3 - 1].score == box[t3].score)
box[t3].lanknumber = box[t3 - 1].lanknumber;
else
box[t3].lanknumber = now2;
now2++;
}
m++;
}
sort(box, box + n, cmp);
now1 = 1, now2 = 1;
for (int t3 = 0; t3 < n; t3++)
{
if (t3 != 0 && box[t3 - 1].score == box[t3].score)
box[t3].all = box[t3 - 1].all;
else
box[t3].all = now2;
now2++;
}
cout << n << endl;
for (int t5 = 0; t5 < n; t5++)
cout << box[t5].number << " " << box[t5].all << " " << box[t5].countnumber << " " << box[t5].lanknumber << endl;
}
PAT甲级真题 A1025 PAT Ranking的更多相关文章
- PAT 甲级真题题解(1-62)
准备每天刷两题PAT真题.(一句话题解) 1001 A+B Format 模拟输出,注意格式 #include <cstdio> #include <cstring> #in ...
- 1080 Graduate Admission——PAT甲级真题
1080 Graduate Admission--PAT甲级练习题 It is said that in 2013, there were about 100 graduate schools rea ...
- PAT 甲级真题题解(63-120)
2019/4/3 1063 Set Similarity n个序列分别先放进集合里去重.在询问的时候,遍历A集合中每个数,判断下该数在B集合中是否存在,统计存在个数(分子),分母就是两个集合大小减去分 ...
- PAT 甲级真题
1019. General Palindromic Number 题意:求数N在b进制下其序列是否为回文串,并输出其在b进制下的表示. 思路:模拟N在2进制下的表示求法,“除b倒取余”,之后判断是否回 ...
- PAT甲级真题及训练集
正好这个"水水"的C4来了 先把甲级刷完吧.(开玩笑-2017.3.26) 这是一套"伪题解". wacao 刚才登出账号测试一下代码链接,原来是看不到..有空 ...
- Count PAT's (25) PAT甲级真题
题目分析: 由于本题字符串长度有10^5所以直接暴力是不可取的,猜测最后的算法应该是先预处理一下再走一层循环就能得到答案,所以本题的关键就在于这个预处理的过程,由于本题字符串匹配的内容的固定的PAT, ...
- 1018 Public Bike Management (30分) PAT甲级真题 dijkstra + dfs
前言: 本题是我在浏览了柳神的代码后,记下的一次半转载式笔记,不经感叹柳神的强大orz,这里给出柳神的题解地址:https://blog.csdn.net/liuchuo/article/detail ...
- 1022 Digital Library——PAT甲级真题
1022 Digital Library A Digital Library contains millions of books, stored according to their titles, ...
- PAT甲级真题打卡:1001.A+B Format
题目: Calculate a + b and output the sum in standard format -- that is, the digits must be separated i ...
随机推荐
- Numpy改变数组的形状
import numpy as np n = np.arange(10) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # 查看数组的大小 n.size # # 将数 ...
- PHP lstat() 函数
定义和用法 lstat() 函数返回关于文件或符号连接的信息. 该函数将返回一个包含下列元素的数组: [0] 或 [dev] - 设备编号 [1] 或 [ino] - inode 编号 [2] 或 [ ...
- PHP addAttribute() 函数
实例 给根元素和 body 元素添加一个属性: <?php$note=<<<XML<note>高佣联盟 www.cgewang.com<to>Tove& ...
- 7.6 NOI模拟赛 灯 根号分治
比较容易想的题目~ 容易发现 点亮一种颜色的贡献=新增灯的数量-已经存在的边的条数. 用线段树维护并不容易.暴力的话复杂度是\(Q\cdot n\)的. 考虑根号分治 只单纯考虑度数<B的点的话 ...
- 4.3 省选模拟赛 序列游戏 dp
可以发现 某一段被删除后状态难以表示 也难以链接起来. 考虑暴力 有40分的状压dp 暴力存状态 然后枚举转移即可.最后注意和f[0]这个状态取max 不然一分都没有. const int MAXN= ...
- Hadoop学习之基础环境搭建
期望目的 基于VMware workstation 10.0 + CentOS 7 + hadoop 3.2.0,在虚拟机上搭建一套Hadoop集群环境,总共包含4个节点,其中1个master节点.3 ...
- Linux下运行windows 系统下编辑的Python脚本显示“: 没有那个文件或目录”的过程及解决方案
今天在 linux 系统下执行一windows下编辑的python脚本,提示(:没有那个文件或目录)英文提示:(:No such file of directory)如下: 查看文件的权限发现并没有问 ...
- SpringCloud启动异常Stopping service [Tomcat]
问题场景: 领导让我搭建一套Jenkins实现自动化部署,项目是SpringCloud项目,配置的过程很顺利,给我提供了一台服务器做部署测试(服务器以前是做dev环境,很长时间没人用了) 我把所有项目 ...
- Logback日志格式优化,解决输出***@2b193f2d问题
原文出处:Java之道 原文地址:http://www.hollischuang.com/archives/3689 我们在开发的时候,经常要打印日志,有的时候会在一些代码的关键节点处进行日志输出.使 ...
- SQL关联查询
从2张或多张表中,取出有关联的数据 关联查询一共有几种情况: 内连接:INNER JOIN .CROSS JOIN (1)形式一 select 字段列表 from A表 inner join B表 o ...