1095 解码PAT准考证 (25 分)

PAT 准考证号由 4 部分组成:

  • 第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;
  • 第 2~4 位是考场编号,范围从 101 到 999;
  • 第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;
  • 最后 11~13 位是考生编号,范围从 000 到 999。

现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。

输入格式:

输入首先在一行中给出两个正整数 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
//lichuo 大佬的代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<unordered_map>
using namespace std;struct Node{string t;int value;
};bool cmp(const Node &a,const Node &b){return a.value != b.value ? a.value > b.value : a.t < b.t;
}int main(){int n,m,score,num;string s;cin >> n >> m;vector<Node> v(n);for(int i = 0; i < n; i++)cin >> v[i].t >> v[i].value;for(int i = 1; i <= m; i++){cin >> num >> s;printf("Case %d: %d %s\n",i,num,s.c_str());vector<Node> ans;int cnt = 0,score = 0;if(num == 1){for(int j = 0; j < n; j++){if(v[j].t[0] == s[0]) ans.push_back(v[j]);}}else if(num == 2){for(int j = 0; j < n; j++){if(v[j].t.substr(1,3) == s){cnt++;score += v[j].value;}}if(cnt != 0) printf("%d %d\n",cnt,score);}else if(num == 3){unordered_map<string,int> m;for(int j = 0; j < n; j++){if (v[j].t.substr(4, 6) == s) m[v[j].t.substr(1, 3)]++;}for (auto it : m) ans.push_back({it.first, it.second});}sort(ans.begin(),ans.end(),cmp);for(int j = 0; j < ans.size(); j++){printf("%s %d\n",ans[j].t.c_str(),ans[j].value);}if(((num == 1 || num == 3) && ans.size() == 0) || (num == 2 && cnt == 0))printf("NA\n");}return 0;
}

 

转载于:https://www.cnblogs.com/wanghao-boke/p/10458830.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《基础算法》

序号内容1工厂模式2观察者模式3单例模式4策略模式5memcpy、memmove6strpcy7strcat8strcmp9快速排序算法10归并排序算法11堆排序算法

C++ STL之Vector

向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 vector 属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。vector是C用于数组类的容器&#xff0c;它可以被近似的认为是一个自动增长…

字符流中第一个不重复的字符

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如&#xff0c;当从字符流中只读出前两个字符"go"时&#xff0c;第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时&#xff0c;第一个只出现一次的字符是&q…

C++ STL之Set

set是关联容器&#xff0c;类似于集合。 特点是里面的元素不会重复&#xff0c;而且元素时有序的。 1.声明定义&#xff1a; #include<set>using namespace std;set<int> s; 2.常见用法 s.inert(5); //插入 s.begin(); //返回s的第一个元素 s.end(); // 返回最后一…

表示数值的字符串

题目描述 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。例如&#xff0c;字符串"100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","…

数据库简单实用(一)

一、实验环境&#xff1a; MySQL 2.7.22 xfce终端 二、开发准备 打开MySQL服务并使用root登录 sudo service mysql start //打开mysql服务 mysql -u root //使用root用户登录&#xff0c;密码为空 -u和root之间可以不用空格 三、实验步骤 //如果在操作中忘掉&#xff1b;可以使…

lambda 表达式定制操作

泛型算法中的定制操作 许多算法都会比较输入序列中的元素以达到排序的效果&#xff0c;通过定制比较操作&#xff0c;可以控制算法按照编程者的意图工作。 普通排序算法&#xff1a;template<class RandomIterator> void sort(RandomIterator first,RandomIterator last)…

包含min函数的栈

题目描述 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的min函数&#xff08;时间复杂度应为O&#xff08;1&#xff09;&#xff09;。 解法&#xff1a; class Solution { public:stack<int> s;stack<int> s_min;void push(int v…

01-复杂度3 二分查找 (20 分)

本题要求实现二分查找算法。 函数接口定义&#xff1a; Position BinarySearch( List L, ElementType X );其中List结构定义如下&#xff1a; typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存线性表中最后…

二叉树的镜像

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义&#xff1a;源二叉树 8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 解法&#xff1a; /* struct TreeNode {int val;struct TreeNode *left;struct Tre…

01-复杂度1 最大子列和问题 (20 分)

给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ }&#xff0c;“连续子列”被定义为{ N​i​​, N​i1​​, ..., N​j​​ }&#xff0c;其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 }&#x…

300. 最长上升子序列

给定一个无序的整数数组&#xff0c;找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101]&#xff0c;它的长度是 4。 说明: 可能会有多种最长上升子序列的组合&#xff0c;你只需要输出对应的长度即可。 你算法…

02-线性结构1 两个有序链表序列的合并 (15 分)

本题要求实现一个函数&#xff0c;将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义&#xff1a; List Merge( List L1, List L2 );其中List结构定义如下&#xff1a; typedef struct Node *PtrToNode; struct Node {ElementType Data; /* 存储结点数据…

50. Pow(x, n)

实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 1/22 1/4 0.25 说明: -100.0 < x < 100.0 n 是 32 位有符号整数&…

01-复杂度2 Maximum Subsequence Sum (25 分)

Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i1​​, ..., N​j​​ } where 1. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements.…

进制转换习题

题目&#xff1a;进制转换 解法&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std; long long nums, k;void solution(long long nums, long long k) {vector<int> res;while(nums){long long curr nu…

02-线性结构2 一元多项式的乘法与加法运算 (20 分)

设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行&#xff0c;每行分别先给出多项式非零项的个数&#xff0c;再以指数递降方式输入一个多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 输出格式: 输出分2行&…

《Leetcode | 02》

序号题目类型标记 863. 二叉树中所有距离为 K 的结点 ★ 94. 二叉树的中序遍历 ★ 102. 二叉树的层次遍历 144. 二叉树的前序遍历 450. 删除二叉搜索树中的节点 701. 二叉搜索树中的插入操作 700. 二叉搜索树中的搜索 108. 将有序数组转换为二叉搜索树 701. …

C++基础:各种输入方法总结

输入原理简述&#xff1a; 程序的输入都建有一个缓冲区&#xff0c;即输入缓冲区。每次输入过程是这样的&#xff0c;当一次键盘输入结束时会将输入的数据存入输入缓冲区&#xff0c;而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的&#xff0c;所以…

04-树7 二叉搜索树的操作集 (30 分)

本题要求实现给定二叉搜索树的5种常用操作。 函数接口定义&#xff1a; BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Position FindMax( B…