题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805344222429184

题意:

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

思路:

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

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

 1 //#include<bits/stdc++>
 2 #include<stdio.h>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<stdlib.h>
 7 #include<queue>
 8 #include<map>
 9 #include<stack>
10 #include<set>
11
12 #define LL long long
13 #define ull unsigned long long
14 #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<string>school_name;
27 set<string>::iterator iter;
28 map<string, int>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<<rnk<<" "<<sch[i].name<<" "<<sch[i].sco<<" "<<sch[i].num<<endl;
80     }
81
82     return 0;
83 } 

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

PAT甲级1141 Ranking of Institutions相关推荐

  1. 17冬第二题 PAT甲级 1141 Ranking of Institutions (25分) 有点鸡贼

    题目 After each PAT, the PAT Center will announce the ranking of institutions based on their students' ...

  2. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体.排序.哈希表.结构体构造函数.结构体内写函 ...

  3. 2020年9月PAT甲级满分必备刷题技巧

    2020年7月的考试结束了,除了本次的考题更新,短期内不会更新. [7月题目的特点:首次线上考试,没出链表.树相关的模板题,第2到4题背景新颖,大大降低了抄袭历年代码的可能性,可以看作是线上考试的新趋 ...

  4. 1141 PAT Ranking of Institutions (PAT甲级)

    29行中把string全部转成lowercase, 我记得之前写成 transform(school.begin(), school.end(), ::tolower); 是可行的,不知道为什么这次编 ...

  5. PAT(A) - 1141. PAT Ranking of Institutions (25)

    1141. PAT Ranking of Institutions (25) 时间限制 500 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...

  6. 1141 PAT Ranking of Institutions (25 分)

    1141 PAT Ranking of Institutions (25 分) After each PAT, the PAT Center will announce the ranking of ...

  7. PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名

    文章目录 题目分析 题目链接 题目分析 一个区域排名和一个总排名.启发我们每个同学的数据存两份,一个存在区域数组中,另一个存在整体数组中. 有序列表中排名怎么求呢? 比如序列 得分:99 98 98 ...

  8. PAT A1141 PAT Ranking of Institutions ——昨夜西风凋碧树

    PAT A1141 PAT Ranking of Institutions 中间计算TWS时不能使用int,否则最后一个测试点不过.但是比较和输出又需要用int,在里面强转int也不给AC,无奈只好先 ...

  9. PAT甲级题目翻译+答案 AcWing(字符串处理)

    1001 A+B Format (20 分) 题意 :将整数转换成标准格式 思路 :从后往前遍历字符串进行模拟,每三个数字加一个逗号,但不能是在最前面加逗号,也不能是加在负号后面 #include & ...

  10. 【PAT甲级真题整理五】1121~1155

    终于考完了qaq把最后一堆也整理出来了 目录 1121 Damn Single(25)set.map的使用 1122 Hamiltonian Cycle(25)哈密顿回路 1123 Is It a C ...

最新文章

  1. Structured Streaming编程 Programming Guide
  2. 用git提交代码时,由于进程加锁,突然崩溃,未来得及解锁,导致其他进程访问不了...
  3. java写航显系统_一种机场航显系统的制作方法
  4. android的logcat详细用法
  5. (Python的)__ name__中包含什么?
  6. 怎么才能显示Eclipse中ConSole的全部输出内容
  7. shell 练习题02 一个文件里将内容三行显示为一行
  8. c语言的加法和平均值程序,编写求一组整数的和与平均值的程序
  9. python短视频教程_Python技巧:10万+的短视频被批量生产了,Python表示不服
  10. 华为笔试题2019年3月
  11. 小程序 微信小商店 获取商品列表
  12. mfc控件设置颜色(超全)
  13. python布尔值使用_Python布尔值--True和False
  14. 链表的中间结点-python
  15. python微信抢票脚本_春节到了 教你使用python来抢票回家
  16. c语言佛像怎么打,佛像的制作过程,让你大开眼界!
  17. SAP VK13 提示 内部错误:T IVAKE F IVAKE_INSERT I MV130F0I
  18. pandas学习笔记1—categories与set_categories
  19. 程序员需要学习英语吗?
  20. AI那么牛,你离失业还有多远?

热门文章

  1. python中文件打开的合法模式组合_python中各种文件打开模式
  2. mess组网 中继_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
  3. linux手动注入网络数据_大多数企业网络无法处理大数据负载 | Linux 中国
  4. HarmonyOS官网壁纸图片,华为鸿蒙系统HarmonyOS目前收集到的壁纸分享
  5. C/C++[codeup 1934,1932,1935]查找
  6. 阿里云云计算 32 PolarDB的概念
  7. 算法:Reverse String(反转字符串)
  8. 会考flash中文字变形为三角形_flash逐帧课件动画制作有哪些详细教程
  9. java interface 传值_前后端分离传值方案-RestfulAPI
  10. FP-growth发现频繁项集