1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】
https://pintia.cn/problem-sets/994805342720868352/problems/994805393241260032
就是排序,注意一些细节即可。
#include<bits/stdc++.h>
using namespace std;
struct node
{string name;int s[10],cnt;int sum=0;
}temp;
unordered_map<string,node>mp;
unordered_map<string,int>hush;
vector<node>ve;
int a[10],n,k,m;
bool cmp(node a,node b)
{if(a.sum==b.sum){if(a.cnt==b.cnt)return a.name<b.name;return a.cnt>b.cnt;}return a.sum>b.sum;
}
int main(void)
{scanf("%d%d%d",&n,&k,&m);for(int i=0;i<k;i++) scanf("%d",&a[i]);for(int i=0;i<m;i++){string name;int id,score;cin>>name;scanf("%d%d",&id,&score);if(!hush[name])//这个学号没见过{for(int j=0;j<k;j++) mp[name].s[j]=-2;//先将每门置为-2,意为还没提交过mp[name].s[id-1]=score;hush[name]=1;}else mp[name].s[id-1]=max({score,mp[name].s[id-1]});}for(auto i=mp.begin();i!=mp.end();i++){temp.name=i->first;int cnt=0;temp.sum=0;bool flag=0;for(int i=0;i<k;i++){temp.s[i]=mp[temp.name].s[i];if(temp.s[i]==a[i]) cnt++;if(temp.s[i]>=0) temp.sum+=temp.s[i],flag=1;//说明有提交过题}temp.cnt=cnt;if(flag) ve.push_back(temp);}sort(ve.begin(),ve.end(),cmp);int index=1;for(int i=0;i<ve.size();i++) {printf("%d",index);printf(" %s %d",ve[i].name.c_str(),ve[i].sum);for(int j=0;j<k;j++) {if(ve[i].s[j]==-2) printf(" -");else if(ve[i].s[j]==-1) printf(" 0");else printf(" %d",ve[i].s[j]);}puts("");if(i+1!=ve.size()&&ve[i].sum!=ve[i+1].sum) index=i+2;}return 0;
}
1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】相关推荐
- 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】
https://pintia.cn/problem-sets/994805342720868352/problems/994805421066272768 这里: 注意用scanf,printf. 有 ...
- PAT甲级1075 PAT Judge:[C++题解]排序、结构体
文章目录 题目分析 题目链接 题目分析 分析:主要问题在于判断是否出现过,如果出现过就不需要再初始化一个结构体,如果未出现过再初始化一个结构体. 当然还需要开一个hash表,用来映射学生id和结构体信 ...
- 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)
1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...
- PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)
PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...
- 1075 PAT Judge 测试点四
测试点四试了很多次 是因为排序问题,把不能输出的和可以输出的记录一起排序,这里修改一下排序算法就ok了 参考了知乎的文章[PAT A1075]PAT Judge(详细解决测试点4!) - 知乎 (zh ...
- L2-009 抢红包 (25 分)(C语言)(排序)
题目 L2-009 抢红包 (25 分) 没有人没抢过红包吧-- 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(≤10 4 ),即 ...
- 1093 Count PAT‘s (25 分)【难度: 一般 / 知识点: 前缀和 组合数】
https://pintia.cn/problem-sets/994805342720868352/problems/994805373582557184 PAT乙级的原题,这里不在赘述,就是前缀和, ...
- 【详解!思路清晰】1095 解码PAT准考证 (25分)
立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范 ...
- 1095 解码PAT准考证 (25分)
PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...
最新文章
- Windows10下安装unbuntu双系统 以及花屏解决办法
- Ironic 裸金属管理服务的底层技术支撑
- oculus ios学习资料整理
- 外国经典儿童读物合集pdf_帮助父母在线购买儿童读物–用户体验案例研究
- Android权限不够问题
- C++总结笔记(二)面向对象
- 设计模式之Builder (创建者模式)的一些个人理解(转)
- CSS three column layout
- AttributeError: 'dict' object has no attribute 'iteritems' .iteritems(): 修改为items()
- PAT甲级1056(queue的用法)
- Mac上go环境变量配置
- 安全公司-* * * *-面试题:_ 安卓逆向分析分享
- 操作系统Clock算法
- python 目标跟踪算法_目标跟踪入门——目标跟踪算法综述
- 两个div实现十字架
- vxWorks系统ps2键盘,tty设备,vga设备的联系
- SYN480R模块解码EV1527教程
- 跨域 问题:When allowCredentials is true, allowedOrigins cannot contain the specia
- 电子科技大学信息与通信工程学院858考研上岸经验分享(一)
- Matlab求解线性方程组(一)共轭梯度法