1. 考生的编号是数字字符串,但是没必要转化成整数再比较,可以直接用strcmp()

2. 对整体的排名进行编号时所有信息都已经齐备,可以边编号边输出

3. 需要有些思量的地方是部分编号,当当前学生的分数不等于他上一个该怎么办

4. 真的需要int final_rank这个属性吗?可以不用的,因为它的输出是紧接着得到

5. 在用scanf读入的时候千万注意除了字符数组都要加&,否则容易出现少读或者段错误

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;const int maxn = 100*300;struct stud{char reg_no[15] = "";int score = 0;int location = 0;int local_rank = 0;
}studs[maxn];//分数高的上去,然后是注册号小的上去
bool cmp(stud a,stud b){if(a.score!=b.score) return a.score>b.score;else return strcmp(a.reg_no,b.reg_no)<0;
}int main(){int n;scanf("%d",&n);int idx = 0;//整张列表for(int i=1;i<=n;i++){int k;scanf("%d",&k);for(int j=0;j<k;j++){int temp =idx++;scanf("%s %d",studs[temp].reg_no,&studs[temp].score);studs[temp].location = i;}//本地排序 sort(studs+idx-k,studs+idx,cmp);//本地编号 studs[idx-k].local_rank = 1;for(int j=idx-k+1;j<idx;j++){if(studs[j].score!=studs[j-1].score)studs[j].local_rank = j-idx+k+1;else studs[j].local_rank = studs[j-1].local_rank;}}//整体排序 sort(studs,studs+idx,cmp);//输出总人数 printf("%d\n",idx); //整体编号+输出int r = 1;//总排名,当当前学生分数不等于上一个,则更新rfor(int i=0;i<idx;i++){if(i>0&&studs[i].score!=studs[i-1].score)r = i+1;printf("%s %d %d %d\n",studs[i].reg_no,r,studs[i].location,studs[i].local_rank); } return 0;
}

1025 PAT Ranking相关推荐

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

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

  2. PAT A 1025. PAT Ranking (25)

    题目 Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of ...

  3. PAT Advanced 1025. PAT Ranking (25) (C语言实现)

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容(本篇文章链接).此处文章目前已更新至与Github Pages同步.欢迎star我的r ...

  4. (C++)1025 PAT Ranking

    #include<cstdio> #include<algorithm> #include<cstring>using namespace std;const in ...

  5. 【PAT甲级 补全前导0 vector作为函数参数】1025 PAT Ranking (25 分) Java、C++

    如何补全前导0 Java String idStr = String.format("%013d", out.id); //用0补全13位 System.out.println(i ...

  6. PAT:1025. PAT Ranking (25) AC

    #include<stdio.h>#include<string.h> //[warning]刚开始少了这个头文件,但是VS2010中被系统自动优化没有察觉 #include& ...

  7. PAT 1025 PAT Ranking题解

    大致题意: 输入所有考生的考号以及所有考生的成绩,以及考生所在的考场号. 输出格式: 考生的考场号 考生的总名次 考生所在的考场号 考生所在考场的名次 首先解决考生的排名问题,应当先对考生在本考场所取 ...

  8. [PAT A1025]PAT Ranking

    [PAT A1025]PAT Ranking 题目描述 1025 PAT Ranking (25 分)Programming Ability Test (PAT) is organized by th ...

  9. PAT 1025 PAT Rankings 思路与题解

    1025 PAT Ranking 原题 思路 定义结构体,将分考场排名也纳入结构体内 id以字符数组的形式存储,输入输出均用格式控制符%s即可 化繁为简,通过下标灵活控制多个一维数组的组合.不要轻易考 ...

最新文章

  1. 格灵深瞳开盘破发,市值73亿,创始人曾是谷歌眼镜创始成员
  2. BOOL,int,float,指针变量 与“零值”比较
  3. 你是什么类型的程序员?
  4. java 通过cookie判断是否登陆
  5. Mapgis6.7 林相图自动注记 .
  6. 关闭线程 C语言,如何用C语言实现多线程
  7. WPF中的附加行为简介
  8. 图解WebGLThree.js工作原理
  9. Vue角色的权限管理
  10. 如何更改springboot的tomcat版本
  11. 如何在Mac上轻松使用SVN
  12. RADIUS服务器不是消息,RADIUS通过如下哪些手段来确保RADIUS服务器与RADIUS客户端之间交互消息正确性()。...
  13. C语言程序设计之猜数字游戏(随机数的讲解)
  14. 永不消逝的电波(二)HackRF入门:家用无线门铃信号重放
  15. 小米扫地机器人原地不动_扫地机器人在原地打转是什么原因?小编来告诉你!...
  16. java、.net、IOS、Android自学编程学习视频与资料
  17. Android应用网络限制功能实现
  18. Java从服务端下载Excel模板文件
  19. termux python3-dev_termux进阶
  20. 如何使用Selenium自动化测试工具获取动态图片验证码?

热门文章

  1. 微信小程序发送模板消息,php发送模板消息
  2. 13-flutter 加载图片
  3. 使用 SQL Server 的 uniqueidentifier 字段类型
  4. App功能测试的注意点
  5. Java云托管服务的开支削减策略
  6. 数据库与操作系统时区更改
  7. 避免死锁的一些注意事项
  8. ServiceStack OrmLite 数据库查询 几个实用方法 (继承表格式化集合等)
  9. Java NIO系列教程(二) Channel
  10. 不用se11创建表结构,作smartforms