前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1085 PAT单位排行 (25 分)

1085 PAT单位排行 (25 分)

作者头像
可爱见见
发布2019-11-18 23:07:40
4530
发布2019-11-18 23:07:40
举报
文章被收录于专栏:卡尼慕卡尼慕

1085 PAT单位排行 (25 分)

【我的代码】

代码语言:javascript
复制
 1#include<iostream>
 2#include<algorithm>
 3#include<map>
 4using namespace std;
 5struct sch{
 6    string name;
 7    float score=0;
 8    int stu=0;
 9}arr[100005];
10bool cmp(sch A,sch B){
11    if((int)A.score!=(int)B.score) return (int)A.score>(int)B.score;
12    else if(A.stu!=B.stu) return A.stu<B.stu;  
13    else return A.name<B.name;      
14}
15int main(){
16    int N;scanf("%d",&N);    
17    int num=0;//学校数
18    map<string,int> mp;                
19    for(int i=0;i<N;i++){
20        string id,school;float score;
21        cin>>id;scanf("%f",&score);cin>>school;
22        for(int j=0;j<school.length();j++){   
23            school[j]=tolower(school[j]);
24        }
25        if(id[0]=='B') score/=1.5;          
26        if(id[0]=='T') score*=1.5;
27        if(mp.count(school)==0){          
28            mp[school]=num++;
29            arr[num-1].name=school;
30        }
31        arr[mp[school]].score+=score;    
32        arr[mp[school]].stu++;        
33    }
34    sort(arr,arr+num,cmp);             
35    int mingci=1;
36    printf("%d\n1 ",num);            
37    cout<<arr[0].name;
38    printf(" %d %d",(int)arr[0].score,arr[0].stu);
39    for(int i=1;i<num;i++){                    
40        if((int)arr[i].score!=(int)arr[i-1].score)  
41            mingci=i+1;            
42        printf("\n%d ",mingci);            
43        cout<<arr[i].name;
44        printf(" %d %d",(int)arr[i].score,arr[i].stu);
45    }
46    return 0;
47}

【总结】

  1. 首先建立一个 School 结构体,包含了学校名字、学生人数以及学校得分。(由输出的形式来决定)
  2. 据题意,考虑到需要排序,可以根据结构体来排序。
  3. 接着到主函数。对每个数据的处理,首先处理学校名字,全部转成小写,然后使用一个map来定义对应学校与序列号的对应关系。这里有一个小技巧,来判断该学校名是否已经存在。
代码语言:javascript
复制
 if(mp.count(school)==0)

这个count可以统计出现与否,而find返回的是出现的位置。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-14,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com