博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT甲级1141 Ranking of Institutions
阅读量:5329 次
发布时间:2019-06-14

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

题目

题意:

给定几个学生的PAT分数和学校,给这些学校学生的PAT总分排序。

思路:

库函数tolower()和toupper()可以分别把字符串转换为都是小写字母和都是大写字母。

这道题要注意的是,因为是加权的总分,算的时候应该用double。但是题目中有说,总分取加权之后的整数部分,全部加完后要转成int进行比较。

1 //#include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 12 #define LL long long13 #define ull unsigned long long14 #define inf 0x7f7f7f7f 15 16 using namespace std;17 18 const int maxn = 1e5 + 5;19 int n;20 struct school{21 string name;22 int num;23 double sco;24 int rnk;25 }sch[maxn];26 set
school_name;27 set
::iterator iter;28 map
schoolid;29 30 bool cmp(school &a, school &b)31 {32 if((int)a.sco == (int)b.sco)33 if(a.num == b.num)return a.name < b.name;34 else return a.num < b.num;35 else return (int)a.sco > (int)b.sco;36 }37 38 struct student{39 string name;40 double sco;41 string sch;42 }stu[maxn];43 44 int main()45 {46 scanf("%d", &n);47 for(int i = 0; i < n; i++){48 cin>>stu[i].name>>stu[i].sco>>stu[i].sch;49 if(stu[i].name[0] == 'T')stu[i].sco *= 1.5;50 else if(stu[i].name[0] == 'B')stu[i].sco /= 1.5;51 transform(stu[i].sch.begin(), stu[i].sch.end(), stu[i].sch.begin(), ::tolower);52 school_name.insert(stu[i].sch);53 }54 int id = 0;55 for(iter = school_name.begin(); iter != school_name.end(); iter++){56 string s = *iter;57 sch[id].name = s;58 schoolid[s] = id++;59 }60 61 for(int i = 0; i < n; i++){62 int sid = schoolid[stu[i].sch];63 sch[sid].num++;64 sch[sid].sco += stu[i].sco;65 }66 67 sort(sch, sch + id, cmp);68 int rnk = 0, tie = 0;69 printf("%d\n", id);70 for(int i = 0; i < id; i++){71 sch[i].sco = (int)sch[i].sco;72 if(i != 0 && sch[i].sco == sch[i - 1].sco){73 tie++;74 }75 else{76 rnk += tie + 1;77 tie = 0;78 }79 cout<
<<" "<
<<" "<
<<" "<
<

 

转载于:https://www.cnblogs.com/wyboooo/p/10522423.html

你可能感兴趣的文章
php面向对象
查看>>
H5和css3(二)
查看>>
八月二十二的php
查看>>
八月二十六的题
查看>>
H5和css3属性(一)
查看>>
百分比、圣杯和双飞翼布局
查看>>
docker快速安装rabbitmq
查看>>
from urllib import parse模块的使用
查看>>
python和go对比字符串的链式处理
查看>>
python实现百度OCR图片识别
查看>>
python基于redis实现分布式锁
查看>>
python中os模块获取路径的几种方式
查看>>
go操作空指针导致supervisor进程服务挂机的坑
查看>>
python定时任务模块APScheduler
查看>>
platform模块和ctypes模块
查看>>
go网络库cellent实现socket聊天功能
查看>>
Python内置的一个用于命令项选项与参数解析的模块argparse
查看>>
from Crypto.Cipher import AES加密解密
查看>>
goconvey测试模块
查看>>
python用类实现装饰器
查看>>