题目链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805344222429184
题解
题目要求
n个考生,每个考生信息为:
ID
6个字符的字符串,第一位是考试等级(B、A、T)
score
分数,[0,100]的整数
school
不超6位的学校码,由英文字母组成,不区分大小写,但输入中有大小写
请输出:
第一行输出学校的数量
然后按rank的非降序输出Rank School TWS Ns
rank是排名,从1开始,根据TWS非升序排序。
如果TWS相等,则两校的rank也相等,且应按NS增序输出;如果Ns也相等,则按学校码的字母表顺序输出
school是学校码,用小写输出
TWS是加权分,等于该校B级考生总分/1.5+该校A级考生总分+该校T级考生总分*1.5,只取计算结果的整数部分
Ns是该校的考生数
思路
注意将学校码转换为小写
输出顺序有两方面:
- 如果TWS相等,则两校的rank也相等,这一点要在最后控制
- 其它输出顺序通过sort函数使用的cmp函数控制
我这里是使用了一个map,最后存入vector排序;也可以使用两个map(键都为学校码),一个存每个TWS,一个存Ns,最后都存入vector
我计算TWS的方法比较麻烦,因为刚开始理解错了TWS的公式
用map而不是unorder_map的话,最后一个测试点会超时
代码
1 | // Problem: PAT Advanced 1141 |
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!