PAT-1153(Decode Registration Card of PAT)+unordered_map的使用+vector的使用+sort条件排序的使用
Decode Registration Card of PAT
PAT-1153
- 这里需要注意题目的规模,并不需要一开始就存储好所有的满足题意的信息
- 这里必须使用unordered_map否则会超时
- vector的使用需要注意,只有一开始赋予了容量才能读取。
- 不需要使用set也可以
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<sstream>
#include<set>
#include<map>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=10004;
int n,m;
struct Node{
string code;
char type;
int site;
string date;
int number;
int score;
Node(){
}
Node(string co,char ty,int si,string da,int nu,int sc):
code(co),type(ty),site(si),date(da),number(nu),score(sc){
}
bool operator<(const Node& node)const{
if(score==node.score){
return code<node.code;
}else return score>node.score;
}
int times;
};
struct NType3{
int site,times;
NType3(){
}
NType3(int a,int b):site(a),times(b){
}
bool operator<(const NType3& node2)const{
if(times==node2.times){
return site<node2.site;
}else return times>node2.times;
}
};
set<Node>type1[26];
map<int,int>sit;
map<int,int>totscore;
map<int,int>dat[1000006];
set<NType3>type3[1000006];
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
string code;int score;
cin>>code>>score;
char level=code[0];
int site=stoi(code.substr(1,3));
string date=code.substr(4,6);
int number=stoi(code.substr(10));
// cout<<level<<" "<<site<<" "<<date<<" "<<number<<endl;
Node node=Node(code,level,site,date,number,score);
sit[site]++;
totscore[site]+=score;
type1[level-'A'].insert(node);
if(dat[stoi(date)][site]==0){
set<NType3>te;
te.insert(NType3(site,0));
type3[stoi(date)].insert(NType3(site,0));
}
dat[stoi(date)][site]++;
}
for(int i=0;i<m;i++){
int type;string s;
cin>>type>>s;
if(type==1){//level
set<Node> now=type1[s[0]-'A'];
set<Node>::iterator it;
int num=0;
for(it=now.begin();it!=now.end();it++){
Node no=*it;
cout<<no.code<<" "<<no.score<<endl;
num++;
}
if(num==0)
cout<<"NA"<<endl;
}else if(type==2){//site
int numsit=sit[stoi(s)];
if(numsit==0){
cout<<"NA"<<endl;
}else cout<<sit[stoi(s)]<<" "<<totscore[stoi(s)]<<endl;
}else{//date
set<NType3> now=type3[stoi(s)];
set<NType3> temp;
for(set<NType3>::iterator it=now.begin();it!=now.end();it++){
NType3 no=*it;
int site=no.site;
int times=dat[stoi(s)][site];
no.times=times;
temp.insert(no);
}
set<NType3>::iterator it;
int num=0;
for(it=temp.begin();it!=temp.end();it++){
NType3 no=*it;
cout<<no.site<<" "<<no.times<<endl;
num++;
}
if(num==0)
cout<<"NA"<<endl;
}
}
return 0;
}
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<sstream>
#include<set>
#include<map>
#include<cmath>
#include<vector>
#include<unordered_map>
using namespace std;
const int maxn=10004;
int n,m;
struct Node{
string code;
int value;
};
bool cmp(Node& node1,Node& node2){
if(node1.value==node2.value){
return node1.code<node2.code;
}else return node1.value>node2.value;
}
int main(){
cin>>n>>m;
vector<Node>v(n);//只有指定了容器大小才能使用下面输入语句
for(int i=0;i<n;i++){
string code;int score;
// cin>>code>>score;
// Node node;
// node.code=code;
// node.value=score;
// v.push_back(node);
cin>>v[i].code>>v[i].value;
}
for(int i=1;i<=m;i++){
int type;string s;
cin>>type>>s;
printf("Case %d: %d %s\n",i,type,s.c_str());
// cout<<"Case "<<i<<": "<<type<<" "<<s<<endl;
if(type==1){
vector<Node>ve;
for(Node item:v){
if(item.code.substr(0,1)==s){
ve.push_back(item);
}
}
if(ve.size()==0)
printf("NA\n");
else{
sort(ve.begin(),ve.end(),cmp);
for(Node item:ve){
printf("%s %d\n",item.code.c_str(),item.value);
// cout<<item.code<<" "<<item.value<<endl;
}
}
}else if(type==2){
int num=0,tot=0;
for(Node item:v){
if(s==item.code.substr(1,3)){
num++;
tot+=item.value;
}
}
if(num==0)
printf("NA\n");
else {
printf("%d %d\n",num,tot);
// cout<<num<<" "<<tot<<endl;
}
}else if(type==3){
unordered_map<string,int>ma;
for(Node item:v){
if(s==item.code.substr(4,6)){
string site=item.code.substr(1,3);
ma[site]++;
}
}
if(ma.size()==0)
printf("NA\n");
else{
vector<Node>now;
for(auto item:ma){
now.push_back({item.first,item.second});
}
sort(now.begin(),now.end(),cmp);
for(Node item:now){
printf("%s %d\n",item.code.c_str(),item.value);
}
}
}
}
// cout<<"jhjj"<<endl;
return 0;
}
PAT-1153(Decode Registration Card of PAT)+unordered_map的使用+vector的使用+sort条件排序的使用的更多相关文章
- PAT甲 1095 解码PAT准考证/1153 Decode Registration Card of PAT(优化技巧)
1095 解码PAT准考证/1153 Decode Registration Card of PAT(25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级: ...
- 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, nam ...
- 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 (25 分)——多种情况排序
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 ...
- 1093. Count PAT’s (25)-统计字符串中PAT出现的个数
如题,统计PAT出现的个数,注意PAT不一定要相邻,看题目给的例子就知道了. num1代表目前为止P出现的个数,num12代表目前为止PA出现的个数,num123代表目前为止PAT出现的个数. 遇到P ...
- PAT 乙级 1040.有几个PAT C++/Java
题目来源 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位( ...
随机推荐
- 树链剖分(附带LCA和换根)——基于dfs序的树上优化
.... 有点懒: 需要先理解几个概念: 1. LCA 2. 线段树(熟练,要不代码能调一天) 3. 图论的基本知识(dfs序的性质) 这大概就好了: 定义: 1.重儿子:一个点所连点树size最大的 ...
- WPF 之命令(七)
一.前言 事件的作用是发布和传播一些消息,消息送达接收者,事件的使命也就完成了,至于消息响应者如何处理发送来的消息并不做规定,每个接收者可以使用自己的行为来响应事件.即事件不具有约束力. 命令 ...
- 二进制安装kubernetes(七) 部署知识点总结
1.k8s各个组件之间通信,在高版本中,基本都是使用TSL通信,所以申请证书,是必不可少的,而且建议使用二进制安装,或者在接手一套K8S集群的时候,第一件事情是检查证书有效期,证书过期或者TSL通信问 ...
- java中的装箱及拆箱
java中存在8中基本的数据类型,每一种数据类型都有包装类型. 包装类型:每一个基本的数据类型都会------对应一个包装类型. boolean------------------>Boolea ...
- python 调用麦克风;摄像头;截屏;
# -*- coding: utf-8 -*- """ Created on Mon Jun 24 14:47:35 2019 @author: erio "& ...
- 鸟哥的linux私房菜——第十章学习(BASH)
第十章 BASH 1.0).认识BASH 作用:通过" Shell "可以将我们输入的指令与 Kernel 沟通,好让Kernel 可以控制硬件来正确无误的工作! 应用程序其实是在 ...
- codeforces 01B
B. Spreadsheets time limit per test 10 seconds memory limit per test 64 megabytes input standard inp ...
- macOS & Catalina vs Big Sur
macOS & Catalina vs Big Sur 乍一看,macOS的色彩更加丰富,最大的变化就是明亮,略带卡通风格的iOS形状的图标. 一切都变得更加圆润,感觉一切都变得更大了. 这可 ...
- Flutter Widgets
Flutter Widgets Flutter 组件 Syncfusion Flutter Widgets 所有组件均支持即装即用的 Android,iOS和 Web not free https:/ ...
- PM2 & nodemon
PM2 & nodemon node.js server tools PM2 https://pm2.keymetrics.io/ https://pm2.io/ $ yarn global ...