PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1926字,纯文字阅读大概需要3分钟。
内容图文
![PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名](/upload/InfoBanner/zyjiaocheng/604/5ee31528e919486cb4f9c5a89e4ff612.jpg)
文章目录
题目分析
来源:acwing
分析:和下面这题是一道题:
PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数
排名得记录一下,做过几道类似的题目:学校首先按加权总分排行。如有并列,则应对应相同的排名,并按考生人数升序输出。这种处理方式是设一个变量rank,如果分数不一样的话,排名rank就等于前面的人数+1;如果分数一样的话,rank不变。
样例:
5
1 cmu 192 2
1 au 192 3
3 pku 100 1
4 hypu 81 2
4 lanx 81 2
代码:
int rank =1;
for(int i = 0; i<schools.size(); i++){
auto a = schools[i];
if(i== 0 || a.score != schools[i-1].score) rank = i+1;
printf("%d %s %d %d\n",rank,a.id.c_str(),a.score,a.cnt);
}
ac代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n;
struct School{
string id;
int b,a,t;
int cnt;
int score;
//默认构造函数
School(): b(0),a(0),t(0),cnt(0),score(0) {}
//求总分数,取整(int)不是四舍五入
void calc(){
score = (int)(b/1.5 + a + t*1.5);
}
//排序:重载小于号
bool operator<(const School& s)const{
if(score != s.score) return score > s.score;
else if(cnt != s.cnt) return cnt < s.cnt;
return id < s.id;
}
};
//变成小写
string change(string a){
string res;
for(auto s :a)
s=tolower(s),res +=s;
return res;
}
int main(){
cin >>n ;
//hash表
unordered_map<string,School> hash1;
for(int i = 0; i<n ; i++){
string id,sch;
int score;
cin >> id >> score >> sch;
sch=change(sch);
if(id[0]=='B') hash1[sch].b += score;
if(id[0]=='A') hash1[sch].a += score;
if(id[0]=='T') hash1[sch].t += score;
hash1[sch].cnt ++;
hash1[sch].id = sch;
}
vector<School> schools;
for(auto sch:hash1) {
auto s = sch.second;
s.calc(); //求总分
schools.push_back(s);//放进vector
}
sort(schools.begin(),schools.end());
cout<< schools.size()<<endl;
//排名
int rank =1;
for(int i = 0; i<schools.size(); i++){
auto a = schools[i];
if(i== 0 || a.score != schools[i-1].score) rank = i+1;
printf("%d %s %d %d\n",rank,a.id.c_str(),a.score,a.cnt);
}
}
题目来源
PAT甲级1141 PAT Ranking of Institutions
https://www.acwing.com/problem/content/1636/
内容总结
以上是互联网集市为您收集整理的PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名全部内容,希望文章能够帮你解决PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。