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 分)【难度: 一般 / 知识点: 多关键字排序】相关推荐

  1. 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805421066272768 这里: 注意用scanf,printf. 有 ...

  2. PAT甲级1075 PAT Judge:[C++题解]排序、结构体

    文章目录 题目分析 题目链接 题目分析 分析:主要问题在于判断是否出现过,如果出现过就不需要再初始化一个结构体,如果未出现过再初始化一个结构体. 当然还需要开一个hash表,用来映射学生id和结构体信 ...

  3. 【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 ...

  4. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  5. 1075 PAT Judge 测试点四

    测试点四试了很多次 是因为排序问题,把不能输出的和可以输出的记录一起排序,这里修改一下排序算法就ok了 参考了知乎的文章[PAT A1075]PAT Judge(详细解决测试点4!) - 知乎 (zh ...

  6. L2-009 抢红包 (25 分)(C语言)(排序)

    题目 L2-009 抢红包 (25 分) 没有人没抢过红包吧-- 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(≤10 4 ),即 ...

  7. 1093 Count PAT‘s (25 分)【难度: 一般 / 知识点: 前缀和 组合数】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805373582557184 PAT乙级的原题,这里不在赘述,就是前缀和, ...

  8. 【详解!思路清晰】1095 解码PAT准考证 (25分)

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范 ...

  9. 1095 解码PAT准考证 (25分)

    PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...

最新文章

  1. Windows10下安装unbuntu双系统 以及花屏解决办法
  2. Ironic 裸金属管理服务的底层技术支撑
  3. oculus ios学习资料整理
  4. 外国经典儿童读物合集pdf_帮助父母在线购买儿童读物–用户体验案例研究
  5. Android权限不够问题
  6. C++总结笔记(二)面向对象
  7. 设计模式之Builder (创建者模式)的一些个人理解(转)
  8. CSS three column layout
  9. AttributeError: 'dict' object has no attribute 'iteritems' .iteritems(): 修改为items()
  10. PAT甲级1056(queue的用法)
  11. Mac上go环境变量配置
  12. 安全公司-* * * *-面试题:_ 安卓逆向分析分享
  13. 操作系统Clock算法
  14. python 目标跟踪算法_目标跟踪入门——目标跟踪算法综述
  15. 两个div实现十字架
  16. vxWorks系统ps2键盘,tty设备,vga设备的联系
  17. SYN480R模块解码EV1527教程
  18. 跨域 问题:When allowCredentials is true, allowedOrigins cannot contain the specia
  19. 电子科技大学信息与通信工程学院858考研上岸经验分享(一)
  20. Matlab求解线性方程组(一)共轭梯度法

热门文章

  1. anaconda3下opencv安装
  2. (转)Spring定时任务的几种实现
  3. POJ2301+水~~~~~~
  4. esp32 烧录固件
  5. CAN总线基础(二)——CAN总线物理层介绍(总线电压详解)
  6. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
  7. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和友元
  8. 智能合约重构社会契约(9)Fabric
  9. C++(十)——模板(上)
  10. 初等数论--整除--公倍数一定是最小公倍数的倍数