博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT Basic 1085
阅读量:5100 次
发布时间:2019-06-13

本文共 2454 字,大约阅读时间需要 8 分钟。

1085 PAT单位排行

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

输入格式:

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

准考证号 得分 学校

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

输出格式:

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

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

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

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

输入样例:

10A57908 85 AuB57908 54 LanXA37487 60 auT28374 67 CMUT32486 24 hypuA66734 92 cmuB76378 71 AUA47780 45 lanxA72809 100 pkuA03274 45 hypu

输出样例:

51 cmu 192 21 au 192 33 pku 100 14 hypu 81 24 lanx 81 2      题解:这道题感觉就是考结构体排序,刚开始按照学校名字排序,方便计算各个学校成绩,再按照题目所示规则排序输出即可。   感觉这道题用map也可以做出来。 代码如下:
1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 struct school{ 8 string name; 9 double score;10 int number;11 };12 13 school a[100000];14 school b[100000];15 16 bool cmd( const school &a, const school &b){17 if( (int)a.score != (int)b.score)18 return (int)a.score > (int)b.score;19 else if(a.number != b.number)20 return a.number < b.number;21 else return a.name < b.name;22 }23 24 bool cmd1( const school &a, const school &b){25 return a.name < b.name;26 }27 28 int main()29 {30 int n, m = 0, flag = 0, k = 1, l = 0, score1;31 double score;32 string id, s_name;33 scanf("%d",&n);34 for( int i = 0; i < n; i++){35 cin>>id>>score>>s_name;36 if(id[0] == 'T')37 score *= 1.5;38 else if(id[0] == 'B')39 score /= 1.5;40 flag = 0;41 for( int j = 0; j < s_name.length();j++)42 s_name[j] = tolower(s_name[j]); 43 a[i].name = s_name;44 a[i].score = score;45 a[i].number = 1; 46 }47 sort(a,a+n,cmd1);48 b[l].name = a[0].name;49 b[l].score = a[0].score;50 b[l].number = 1;51 for( int i = 1; i < n; i++){52 if( b[l].name == a[i].name){53 b[l].score += a[i].score; 54 b[l].number++; 55 }56 else{57 l++;58 b[l].name = a[i].name;59 b[l].score = a[i].score;60 b[l].number = 1;61 }62 }63 sort(b,b+l+1,cmd);64 cout<
<

 

 

转载于:https://www.cnblogs.com/yxp400/p/9478622.html

你可能感兴趣的文章
Hadoop简介
查看>>
linux文件系统挂载
查看>>
Python list替换元素
查看>>
SQL Server 优化存储过程的七种方法 (转)
查看>>
设计模式(十一)外观模式(Facade Pattern)
查看>>
JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密
查看>>
查看SQLServer的QUOTED_IDENTIFIER等配置
查看>>
[转]构建基于WCF Restful Service的服务
查看>>
数据访问
查看>>
php基础知识测试总结
查看>>
Apache Cordova
查看>>
java随笔一(关于定时任务)
查看>>
Codeforces 975D Ghosts 【math】
查看>>
Oracle expdp/impdp导出导入命令及数据库备份
查看>>
HDU 1074 Doing Homework (dp+状态压缩)
查看>>
JavaScript经典代码【二】【javascript判断用户点了鼠标左键还是右键】
查看>>
Cocos2dx使用wxsqlite开源加密SQLite3数据库
查看>>
linux —— shell 编程(编程语法)
查看>>
2011计算机二级c语言考点:二维数组
查看>>
T-SQL:毕业生出门需知系列(六)
查看>>