PAT Advanced 1153 Decode Registration Card of PAT (25 分)
A registration card number of PAT consists of 4 parts:
- the 1st letter represents the test level, namely,
Tfor the top level,Afor advance andBfor basic; - the 2nd - 4th digits are the test site number, ranged from 101 to 999;
- the 5th - 10th digits give the test date, in the form of
yymmdd; - finally the 11th - 13th digits are the testee's number, ranged from 000 to 999.
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.
Input Specification:
Each input file contains one test case. For each case, the first line gives two positive integers N (≤) and M (≤), the numbers of cards and the queries, respectively.
Then N lines follow, each gives a card number and the owner's score (integer in [), separated by a space.
After the info of testees, there are M lines, each gives a query in the format Type Term, where
Typebeing 1 means to output all the testees on a given level, in non-increasing order of their scores. The correspondingTermwill be the letter which specifies the level;Typebeing 2 means to output the total number of testees together with their total scores in a given site. The correspondingTermwill then be the site number;Typebeing 3 means to output the total number of testees of every site for a given test date. The correspondingTermwill then be the date, given in the same format as in the registration card.
Output Specification:
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:
- for a type 1 query, the output format is the same as in input, that is,
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); - for a type 2 query, output in the format
Nt NswhereNtis the total number of testees andNsis their total score; - for a type 3 query, output in the format
Site NtwhereSiteis the site number andNtis the total number of testees atSite. The output must be in non-increasing order ofNt's, or in increasing order of site numbers if there is a tie ofNt.
If the result of a query is empty, simply print NA.
Sample Input:
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
Sample Output:
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
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
struct stu{
string num;
int grade;
};
bool cmp1(const stu& s1,const stu& s2){
if(s1.grade!=s2.grade) return s1.grade>s2.grade;
else return s1.num<s2.num;
}
bool cmp3(const pair<string,int>& p1,const pair<string,int>& p2){
if(p1.second!=p2.second) return p1.second>p2.second;
else return p1.first<p2.first;
}
int main()
{
int peo,test;stu tmp;
int case_num;string case_str;
cin>>peo>>test;
vector<stu> vec;
for(int i=;i<peo;i++){
cin>>tmp.num>>tmp.grade;
vec.push_back(tmp);
}
for(int i=;i<=test;i++){
cin>>case_num>>case_str;
printf("Case %d: %d %s\n",i,case_num,case_str.data());
if(case_num==){
vector<stu> vec1;
for(int j=;j<peo;j++){
if(vec[j].num[]==case_str[]) vec1.push_back(vec[j]);
}
sort(vec1.begin(),vec1.end(),cmp1);
for(int j=;j<vec1.size();j++)
printf("%s %d\n",vec1[j].num.data(),vec1[j].grade);
if(vec1.size()==) printf("NA\n");
}else if(case_num==){
int num=,score=;
for(int j=;j<peo;j++){
if(vec[j].num.substr(,)==case_str){
num++;score+=vec[j].grade;
}
}
if(num==) printf("NA\n");
else printf("%d %d\n",num,score);
}else{
unordered_map<string,int> m;
for(int j=;j<peo;j++){
if(vec[j].num.substr(,)==case_str){
m[vec[j].num.substr(,)]++;
}
}
vector<pair<string,int>> vec3(m.begin(),m.end());
sort(vec3.begin(),vec3.end(),cmp3);
for(int i=;i<vec3.size();i++)
printf("%s %d\n",vec3[i].first.data(),vec3[i].second);
if(vec3.size()==) printf("NA\n");
}
}
system("pause");
return ;
}
我这边乙级甲级出现了同样的错误,就是这个NA,应该每个都应该打印。
超时,使用unordered_map,如果还是超时,那么把cout换成printf,如果还是超时,那么把cin换成scanf
PAT Advanced 1153 Decode Registration Card of PAT (25 分)的更多相关文章
- PAT甲 1095 解码PAT准考证/1153 Decode Registration Card of PAT(优化技巧)
1095 解码PAT准考证/1153 Decode Registration Card of PAT(25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级: ...
- PAT甲级——1153.Decode Registration Card of PAT(25分)
A registration card number of PAT consists of 4 parts: the 1st letter represents the test level, nam ...
- 1153 Decode Registration Card of PAT (25 分)
A registration card number of PAT consists of 4 parts: the 1st letter represents the test level, nam ...
- 1153 Decode Registration Card of PAT
A registration card number of PAT consists of 4 parts: the 1st letter represents the test level, nam ...
- PAT_A1153#Decode Registration Card of PAT
Source: PAT A1153 Decode Registration Card of PAT (25 分) Description: A registration card number of ...
- PAT-1153(Decode Registration Card of PAT)+unordered_map的使用+vector的使用+sort条件排序的使用
Decode Registration Card of PAT PAT-1153 这里需要注意题目的规模,并不需要一开始就存储好所有的满足题意的信息 这里必须使用unordered_map否则会超时 ...
- PAT A1153 Decode Registration Card of PAT (25 分)——多种情况排序
A registration card number of PAT consists of 4 parts: the 1st letter represents the test level, nam ...
- PAT Advanced 1006 Sign In and Sign Out (25 分)
At the beginning of every day, the first person who signs in the computer room will unlock the door, ...
- PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
This time you are asked to tell the difference between the lowest grade of all the male students and ...
随机推荐
- python基础--字符串、元组
字符串方法 注:字符串和元组一样都是不可变的,以下函数不会改变原来字符串的值,可以将其赋给一个新的变量 st='a b c d,f,g' st_list=st.split()#字符串分割,参数不写,按 ...
- 记录一下自己安装Appium的流程
跟着其他大佬的安装攻略,一步一步来的.过程中遇到了一些问题,也都解决了~ 需要准备的东西: 1.JDK1.8 2.Andriod SDK 3.Node.js 4.Python 5.Appium-pyt ...
- Python数据结构与语法
字典:Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组.字典等其他容器模型:值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组:遍历字典时遍历的是键:访问v ...
- 最新 朗玛信息java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.朗玛信息等10家互联网公司的校招Offer,因为某些自身原因最终选择了朗玛信息.6.7月主要是做系统复习.项目复盘.Leet ...
- Windows Eclipse Scala的入门HelloWorld
[学习笔记] Windows Eclipse Scala的入门HelloWorld 有关带scala版本的eclipse4.7的下载, 你可以直接去: http://scala-ide.org/dow ...
- C++继承种类
- lg 1478
好多天没碰代码了,感觉忘得差不多了,没有学习感觉罪恶深重,从今天起开始补题啊啊! 简单零一背包,套模板就行. #include<bits/stdc++.h> using namespace ...
- python time模块认识
time 模块 -- 时间获取和转换 time 模块提供各种时间相关的功能 在python中, 与时间处理有关的模块包括: time, datatime 以及 calendar 必要说明!: 虽然这个 ...
- 怎样理解AJAX
AJAX: Asynchronous JavaScript and XML, 翻译过来就是: 异步的JavaScript与XML 这已经成为了一个通用名词, 字面意义已经消失了, 因为现在使用Java ...
- Python文件的四种读写方式——r a w r+
# 文件的基本操作,但是一般不这么使用,因为经常会忘记关闭 password=open("abc.txt",mode="r",encoding="UT ...