文章目录

  • 题目分析
  • 题目来源

题目分析



来源:acwing

分析:

本题是三种不同的询问,难道要写三个结构体?想了想,就写了一个结构体,参赛人结构体,内容包括考号id和成绩grade,然后开结构体数组p[N]读入信息。

查询信息就基于该结构体数组。

  • 查询1:按照级别排序。这里直接遍历数组P[N],找到对应级别的考生,放进vector排序即可。简单。
  • 查询2:查询某一考场人数和总分。这里直接遍历数组P[N],找到对应考场数值累加即可。简单。
  • 查询3:查询某一日期的考生,分考场输出人数。这个稍稍有点复杂,需要查询日期后,再建一个哈希表,统计考场的人数。然后放入vector进行双关键字排序。pair<int,string> 存的是<人数,考场>。

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
struct Person{string id;int grade;bool operator<(const Person& t)const{if(grade != t.grade) return grade > t.grade;return id < t.id;}}p[N];int main(){int n, m;cin >> n >> m;for(int i = 0; i< n; i++) cin>> p[i].id >> p[i].grade;for(int i = 1; i<= m; i++){string t ,c;cin >> t>> c;printf("Case %d: %s %s\n",i,t.c_str(),c.c_str());if(t == "1"){vector<Person> persons;for(int i = 0; i<n; i++){if(p[i].id[0]== c[0] )persons.push_back(p[i]);}if(persons.empty()) puts("NA");else{sort(persons.begin(),persons.end());for(auto p :persons) printf("%s %d\n",p.id.c_str(),p.grade);}}else if(t=="2"){int cnt = 0, sum = 0;for(int i = 0; i< n; i++)if(p[i].id.substr(1,3) ==c)  cnt++,sum += p[i].grade;if(!cnt) puts("NA");else printf("%d %d\n",cnt ,sum);}else if(t=="3"){unordered_map<string,int> mp;for(int i =0; i<n; i++){string date = p[i].id.substr(4,6);string sch =p[i].id.substr(1,3);if(date == c) mp[sch]++;}vector<pair<int ,string>> rooms;// 这里数值添-号,直接sort就相当于从大到小排序啦!!!//就不用写什么greater啦。for(auto m:mp) rooms.push_back({-m.second,m.first});sort(rooms.begin(),rooms.end());if(rooms.empty()) puts("NA");else{for(auto room:rooms)printf("%s %d\n",room.second.c_str(),-room.first);}}}
}

题目来源

PAT甲级1153 Decode Registration Card of PAT
https://www.acwing.com/problem/content/1649/

PAT甲级1153 Decode Registration Card of PAT :[C++题解]结构体、哈希表、排序、类似数据库查询题、好题相关推荐

  1. 1153 Decode Registration Card of PAT (25分)

    1153 Decode Registration Card of PAT (25分) 题意: 给出一组学生的准考证号和成绩 准考证号组成为:考试等级(TAB),考场号(从101到999),考试日期(y ...

  2. 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 ...

  3. PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询

    文章目录 题目分析 题目链接 题目分析 分析: 一本书信息由6个,想到用结构体来存. 至于每一个信息可以用string来存,而关键字在想使用vector<string> keywords还 ...

  4. PAT A1153 Decode Registration Card of PAT ——凭谁问,廉颇老矣,尚能饭否

    PAT A1153 Decode Registration Card of PAT 今天选的题目真是*&^%$#*,不但不值钱,搞起来还相当麻烦 思路就是输入的过程中根据查询条件映射和排序好所 ...

  5. PAT(甲级)2018年冬季考试 7-2 Decode Registration Card of PAT

    目录 体会 代码(非满分) 改进 AC代码 体会 这题主要是考察对STL中string,map,vector的应用以及自定义sort()应用. 类型1和2的处理很容易. 类型3要求对于指定date,按 ...

  6. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体.排序.哈希表.结构体构造函数.结构体内写函 ...

  7. PAT甲级1055 The World‘s Richest:[C++题解]k路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 采用二维数组vector[N]来存每个年龄的人(结构体),然后分别从大到小排序.剩下的任务就是从给定的年龄[a ,b]中,k路归并最 ...

  8. PAT甲级1083 List Grades:[C++题解]结构体、排序

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 结构体存下来所有信息.根据成绩存入vector,然后排序输出即可. ac代码 #include<bits/stdc++.h&g ...

  9. PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 分4个vector,单独排序即可. ac代码 #include<bits/stdc++.h> using namespa ...

最新文章

  1. oracle查询执行过的sql语句,如何查询已经执行过的SQL语句曾经的执行花费时间
  2. node-red教程 5 函数节点
  3. 程序员面试金典 - 面试题 02.04. 分割链表
  4. Linux同步时间命令ntpdate
  5. 机器视觉:偏振镜光学原理和在机器视觉中的应用
  6. 如何选择数据分析工具
  7. 这可能是程序员写的最暖的一首歌了
  8. 如何让循环里面语句执行完之后再去循环第二次_Go循环语句的使用
  9. [JZOJ3339]【NOI2013模拟】wyl8899和法法塔的游戏
  10. kali安装邮件客户端
  11. python搜索pdf内容所在页码_使用pyPDF从文档中检索页码
  12. 饿了么交易系统设计思路
  13. formidable词根词缀_实用文档之英语单词(词根词缀)
  14. 3.1抽象工厂[转]
  15. 从ftp下载文件(word)到本地显示文件损坏或错误
  16. mysql安装后,连接报错
  17. python注释快捷键alt_python快捷键的使用【摘抄】
  18. 解决 这些文件可能对你的计算机有害问题
  19. Cocos Creator 3D后期效果解决方案源码剖析--从入门到融汇贯通
  20. pm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: undefi

热门文章

  1. 数据结构(五)位图算法
  2. wampserver 绑定域名 外部可以正常访问
  3. oracle 10 升级补丁
  4. ArcEngine 获取HDF文件中的子文件
  5. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十五)完美捕捉精灵之神器 -- HitTest...
  6. 坚强生活(转)--To 小鱼,妹妹和傻女孩们
  7. java判断键盘按键按下_JAVA 从键盘输入一个字符串 判断其是否能被转换为一个有效的数字,字符串可以按位取出...
  8. 游戏开发需要具备哪些技术_生鲜小程序需要具备哪些功能板块?生鲜小程序开发...
  9. 4.1 什么是人脸识别-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  10. 2.6 更多导数例子-深度学习-Stanford吴恩达教授