1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

题目描述:
每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。

输入格式:
输入第一行给出一个正整数 N(≤10
​5
​​ ),即考生人数。随后 N 行,每行按下列格式给出一个考生的信息:

准考证号 得分 学校

其中准考证号是由 6 个字符组成的字符串,其首字母表示考试的级别:B代表乙级,A代表甲级,T代表顶级;得分是 [0, 100] 区间内的整数;学校是由不超过 6 个英文字母组成的单位码(大小写无关)。注意:题目保证每个考生的准考证号是不同的。

输出格式:
首先在一行中输出单位个数。随后按以下格式非降序输出单位的排行榜:

排名 学校 加权总分 考生人数

其中排名是该单位的排名(从 1 开始);学校是全部按小写字母输出的单位码;加权总分定义为乙级总分/1.5 + 甲级总分 + 顶级总分*1.5的整数部分;考生人数是该属于单位的考生的总人数。

学校首先按加权总分排行。如有并列,则应对应相同的排名,并按考生人数升序输出。如果仍然并列,则按单位码的字典序输出。

输入样例:
10
A57908 85 Au
B57908 54 LanX
A37487 60 au
T28374 67 CMU
T32486 24 hypu
A66734 92 cmu
B76378 71 AU
A47780 45 lanx
A72809 100 pku
A03274 45 hypu

输出样例:
5
1 cmu 192 2
1 au 192 3
3 pku 100 1
4 hypu 81 2
4 lanx 81 2

抄的柳神的,自己写的太拉跨了,就不发出来了呜呜呜。。。。

源代码:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
struct stud
{string scho;int n1,n2;
};
bool cmp(stud a,stud b)          //自定义排序函数
{if(a.n1!=b.n1) return a.n1>b.n1;else if(a.n1==b.n1&&a.n2!=b.n2) return a.n2<b.n2;else return a.scho<b.scho;
}
int main()
{int n,flag=-1;scanf("%d",&n);unordered_map<string, int> m;       unordered_map<string, double> mm;for(int i=0;i<n;i++){string id,sch;char ch;double score;cin>>id;scanf("%lf", &score);cin>>sch;for (int j = 0; j <sch.length();j++)sch[j] = tolower(sch[j]);          //大写字母转换ch=id[0];if(ch=='B') score/=1.5;else if(ch=='T') score*=1.5;m[sch]++;mm[sch]+=score;}vector<stud>v;for(auto it=m.begin();it!=m.end();it++){v.push_back(stud{it->first,(int)mm[it->first],m[it->first]});           //压入校名,分数,人数}sort(v.begin(),v.end(),cmp);   //排序cout<<v.size()<<endl;int flag1=0;for(int i=0;i<v.size();i++){if(flag!=v[i].n1) flag1=i+1;flag=v[i].n1;cout<<flag1<<" "<<v[i].scho<<" "<<v[i].n1<<" "<<v[i].n2<<endl;}return 0;
}

思路清晰。
emmm,还是要加强STL的练习。

1085 PAT单位排行 (25分)-PAT乙级真题-C++实现相关推荐

  1. 【PAT乙级】1085 PAT单位排行 (25 分)

    题目地址 #include<bits/stdc++.h> using namespace std; int n,score; string id,name; struct node{int ...

  2. 【最详细解析+难点分析】1085 PAT单位排行 (25分)

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N( ...

  3. 【PAT乙】1085 PAT单位排行 (25分) map排序

    problem 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10 ​5 ​​ ),即考生人数.随后 N 行,每行 ...

  4. PAT 1085. PAT单位排行 (25) - 乙级

    每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数N(<=105),即考生人数.随后N行,每行按下列格式给出一个考生的信 ...

  5. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  6. PAT 1085 PAT单位排行(25)(映射、集合训练)

    1085 PAT单位排行(25 分) 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10​5​​),即考生人数.随 ...

  7. 1095 解码PAT准考证 (25分)击破测试点3、4,50ms内通关

    1095 解码PAT准考证 (25分)测试点34用时低于35ms 前言 一.题目简介 二.原题内容 1. 设定 2. 输入格式 3. 输出格式 三.题目分析 1. 要求1分析 2. 要求2分析 3. ...

  8. 7-227 PAT排名汇总 (25 分)

    7-227 PAT排名汇总 (25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设 ...

  9. PAT乙级真题1058 || 选择题(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,对话框回复:PAT乙级真题]获取全部真题详解及代码示例 个人博客地址:https://mzwang.top 选择题 题目描述: 批改多选题是比较麻烦的事情,本题 ...

最新文章

  1. Java学习笔记33
  2. mac安装完python怎么打开-Mac OS系统如何安装python
  3. python 之模块之 xml.dom.minidom解析xml
  4. Android学习:自定义ViewGroup方法总结
  5. 电脑退出全屏按哪个键_一款轻量级的电脑看图软件
  6. 1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符
  7. lxml 和 XPah (爬虫)
  8. 2、Linux基础练习题
  9. Android开发学习之路--Camera之初体验
  10. react学习笔记(8)生命周期回顾与再认识
  11. 摩根斯坦利面试题库_经验 | 金融公司摩根士丹利从笔试到实习的全程经验
  12. Telnet和FTP
  13. 金山毒霸免费Wifi独立版,只需一块无线网卡,完爆360随身wifi
  14. 中国对数字货币的态度及政策
  15. “0元送设计”如何换来70亿营收?尚品宅配的新零售数字化增长研究
  16. 【知识图谱】04RDF数据生成(使用D2RQ)
  17. 超越YOLOv4-tiny!YOLObile:移动设备上的实时目标检测 [左侧有码]
  18. Axure8 全选控制中继器里的checkbox
  19. 最新时下最火的盲盒商城源码/视频搭建教程
  20. 什么是本地O2O 本地O2O有哪些细分领域?

热门文章

  1. [转]IText导出word之页眉页脚页码
  2. Vue之集成阿里云滑块验证
  3. 光脚丫学LINQ(003):排序结果集
  4. 解读阿里云成功运营生态体系的两个关键密码:开放与双向赋能
  5. c语言的链表实验总结,链表实现集合实验报告_相关文章专题_写写帮文库
  6. git重置用户git账号金与密码
  7. java:均值哈希实现图像内容相似度比较
  8. java正则表达式 字符串取开头数字 结尾数字 取反
  9. 3 个助你玩转正则表达式的利器
  10. 华为网络测试软件计算机命令