PAT 准考证号由 4 部分组成:
T
代表顶级;A
代表甲级;B
代表乙级;现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。
输入首先在一行中给出两个正整数 N(≤104)和 M(≤100),分别为考生人数和统计要求的个数。
接下来 N 行,每行给出一个考生的准考证号和其分数(在区间 [0,100] 内的整数),其间以空格分隔。
考生信息之后,再给出 M 行,每行给出一个统计要求,格式为:类型 指令
,其中
类型
为 1 表示要求按分数非升序输出某个指定级别的考生的成绩,对应的 指令
则给出代表指定级别的字母;类型
为 2 表示要求将某指定考场的考生人数和总分统计输出,对应的 指令
则给出指定考场的编号;类型
为 3 表示要求将某指定日期的考生人数分考场统计输出,对应的 指令
则给出指定日期,格式与准考证上日期相同。对每项统计要求,首先在一行中输出 Case #: 要求
,其中 #
是该项要求的编号,从 1 开始;要求
即复制输入给出的要求。随后输出相应的统计结果:
类型
为 1 的指令,输出格式与输入的考生信息格式相同,即 准考证号 成绩
。对于分数并列的考生,按其准考证号的字典序递增输出(题目保证无重复准考证号);类型
为 2 的指令,按 人数 总分
的格式输出;类型
为 3 的指令,输出按人数非递增顺序,格式为 考场编号 总人数
。若人数并列则按考场编号递增顺序输出。如果查询结果为空,则输出 NA
。
8 4
B123180908127 99
B102180908003 86
A112180318002 98
T107150310127 62
A107180908108 100
T123180908010 78
B112160918035 88
A107180908021 98
1 A
2 107
3 180908
2 999
Case 1: 1 A
A107180908108 100
A107180908021 98
A112180318002 98
Case 2: 2 107
3 260
Case 3: 3 180908
107 2
123 2
102 1
Case 4: 2 999
NA
英文题:
A registration card number of PAT consists of 4 parts:
T
for the top level, A
for advance and B
for basic;yymmdd
;Now given a set of registration card numbers and the scores of the card owners, you are supposed to output the various statistics according to the given queries.
Each input file contains one test case. For each case, the first line gives two positive integers N (≤104) and M (≤100), the numbers of cards and the queries, respectively.
Then N lines follow, each gives a card number and the owner's score (integer in [0,100]), separated by a space.
After the info of testees, there are M lines, each gives a query in the format Type Term
, where
Type
being 1 means to output all the testees on a given level, in non-increasing order of their scores. The corresponding Term
will be the letter which specifies the level;Type
being 2 means to output the total number of testees together with their total scores in a given site. The corresponding Term
will then be the site number;Type
being 3 means to output the total number of testees of every site for a given test date. The corresponding Term
will then be the date, given in the same format as in the registration card.For each query, first print in a line Case #: input
, where #
is the index of the query case, starting from 1; and input
is a copy of the corresponding input query. Then output as requested:
CardNumber Score
. If there is a tie of the scores, output in increasing alphabetical order of their card numbers (uniqueness of the card numbers is guaranteed);Nt Ns
where Nt
is the total number of testees and Ns
is their total score;Site Nt
where Site
is the site number and Nt
is the total number of testees at Site
. The output must be in non-increasing order of Nt
's, or in increasing order of site numbers if there is a tie of Nt
.If the result of a query is empty, simply print NA
.
8 4
B123180908127 99
B102180908003 86
A112180318002 98
T107150310127 62
A107180908108 100
T123180908010 78
B112160918035 88
A107180908021 98
1 A
2 107
3 180908
2 999
Case 1: 1 A
A107180908108 100
A107180908021 98
A112180318002 98
Case 2: 2 107
3 260
Case 3: 3 180908
107 2
123 2
102 1
Case 4: 2 999
NA
分析:
给出一组学生的准考证号和成绩,准考证号包含了等级(乙甲顶),考场号,日期,和个人编号信息,并有三种查询方式
类型一:给出考试等级,找出相应等级的考生,输出按照分数降序,准考证升序排序
类型二:给出考场号,统计该考场的考生人数和总分统计,输出按人数 总分格式
类型三:给出指定考试日期,查询该日期下所有考场的考生人数,输出按照人数降序,考场号升序排序
先把所有考生的准考证和分数用结构体存储下来
类型一:按照等级查询,枚举选取匹配的学生,然后排序即可
类型二:按照考场查询,枚举选取匹配的学生,然后计数、求和
类型三:按日期查询每个考场人数,用unordered_map存储,最后排序汇总
代码如下:
#include
#include
#include
#include
using namespace std;
struct node {
string id;
int value;
};
bool cmp (const node &a,const node &b)
{
return a.value!=b.value?a.value>b.value:a.id>N>>M;
vector v(N);
for (int i=0;i>v[i].id>>v[i].value;
}
for (int i=1;i<=M;i++)
{
cin>>type>>s;
printf("Case %d: %d %s\n",i,type,s.c_str());
vector ans;
int cnt=0,sum=0;
if (type==1){
for (int j=0;j m;
for (int j=0;j
其他:
map: map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素。因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。map中的元素是按照二叉搜索树(又名二叉查找树、二叉排序树,特点就是左子树上所有节点的键值都小于根节点的键值,右子树所有节点的键值都大于根节点的键值)存储的,使用中序遍历可将键值按照从小到大遍历出来。
unordered_map: unordered_map内部实现了一个哈希表(也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用)。因此,其元素的排列顺序是无序的。