1. 这一题一开始,为了同一个人的数据更新得方便,我把id从字符串转化成整数,作为数组下标,但是注意了,每个学生还是要有字符串的id属性(根据下标得到),因为后面一旦排序,数组下标就毫无意义了。

2.由于这里的很多下标都是从1开始,所以一定要注意循环的开始是1,结束要用小于等于符号

3.有一个一开始理解错的小点是,当一个人提交了但是编译没通过,该题输出的应该是0分而不是-

4.我把结构体中每道题的得分初始化为-2,是为了方便最后判断考生该题有没有提交

AC代码

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;const int maxn = 100010;
const double eps = 1e-3;struct tester{char id[6];int s[6] = {-2,-2,-2,-2,-2,-2};int s_total = 0;int fullMark_n[6] = {0};int f_total = 0;bool ifPrint = false;int rank = 0;
}testers[10010];bool cmp(tester a,tester b){if(a.s_total!=b.s_total)return a.s_total>b.s_total;else if(a.f_total!=b.f_total)return a.f_total>b.f_total;else return strcmp(a.id,b.id)<0;
}int main(){int testers_n = 0;//<=10^4int probs_n = 0;//<=5int subms_n = 0;//<=10^5int s[6] = {0};//每道题的分值scanf("%d %d %d",&testers_n,&probs_n,&subms_n);for(int i=1;i<=probs_n;i++){scanf("%d",&s[i]);}char idStr[6];//读到的idint id;//id转化为整数 int proNo;//读到的问题序号int score;//读到的得分 for(int i=1;i<=subms_n;i++){scanf("%s %d %d",idStr,&proNo,&score);sscanf(idStr,"%d",&id);//首先判断能否打印if(score>-1){testers[id].ifPrint = true;//再判断是否大于当前该生该题得分if(score>testers[id].s[proNo])testers[id].s[proNo] = score;//再判断该生该题得分是否为满分if(score==s[proNo])testers[id].fullMark_n[proNo] = 1;}else{//再判断是否大于当前该生该题得分if(score>testers[id].s[proNo])testers[id].s[proNo] = 0;//既然提交了就算编译没通过也是0而不是- }}for(int i=1;i<=testers_n;i++){//算出每个学生的总分for(int j=1;j<=probs_n;j++){if(testers[i].s[j]!=-2){testers[i].s_total += testers[i].s[j];}}//算出每个学生满分的题数for(int j=1;j<=probs_n;j++){testers[i].f_total += testers[i].fullMark_n[j];}//将数组下标赋予给每个tester作为id,因为数组下标排序后就不起作用sprintf(testers[i].id,"%05d",i); }sort(testers+1,testers+testers_n+1,cmp);testers[1].rank = 1;for(int i=2;i<=testers_n;i++){if(testers[i].ifPrint){if(testers[i].s_total==testers[i-1].s_total){testers[i].rank = testers[i-1].rank;}else{testers[i].rank = i;}}}for(int i=1;i<=testers_n;i++){if(testers[i].ifPrint){printf("%d %s %d",testers[i].rank,testers[i].id,testers[i].s_total);for(int j=1;j<=probs_n;j++){if(testers[i].s[j]!=-2)printf(" %d",testers[i].s[j]);else printf(" -",testers[i].s[j]);}printf("\n");}}}

1075 PAT Judge相关推荐

  1. PAT甲级1075 PAT Judge:[C++题解]排序、结构体

    文章目录 题目分析 题目链接 题目分析 分析:主要问题在于判断是否出现过,如果出现过就不需要再初始化一个结构体,如果未出现过再初始化一个结构体. 当然还需要开一个hash表,用来映射学生id和结构体信 ...

  2. 1075 PAT Judge 测试点四

    测试点四试了很多次 是因为排序问题,把不能输出的和可以输出的记录一起排序,这里修改一下排序算法就ok了 参考了知乎的文章[PAT A1075]PAT Judge(详细解决测试点4!) - 知乎 (zh ...

  3. 1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805393241260032 就是排序,注意一些细节即可. #includ ...

  4. A1075.PAT Judge

    题意 输入k个程序的每个程序的满分分数,再输入m条用户提交的记录.按要求进行分数的排序最后输出.是一道结构体的复杂排序 思路分析 首先明确本题的输出要求: 编译失败的提交分数为-1. 只有至少成功提交 ...

  5. PAT甲级题目翻译+答案 AcWing(排序)

    1012 The Best Rank (25 分) 题意 :给ID和3门成绩,计算其平均分A,输出每位学生最好的排名,A>C>M>E 思路 :如果将所需的若干个元素中使第一个元素为后 ...

  6. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)

    PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...

  7. 刷PAT甲级的各题思路、细节以及遇到的问题记录

    1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...

  8. PAT题型分类 记录汇总

    这篇博客记录了我在跟着<算法笔记>以及习题册<算法笔记 上机实践指南>刷了PAT的题目之后的一些解题方法的总结与心得. 第三章 入门模拟 1. 简单模拟 一般解题思路 这一小节 ...

  9. 【PAT甲级真题整理三】1061~1090

    目录 1061 Dating(20)字符串处理 1062 Talent and Virtue(25)排序 1063 Set Similarity(25)set的使用 1064 Complete Bin ...

最新文章

  1. 【深度学习入门到精通系列】卷积和池化计算详解
  2. Python编程基础:第四节 类型转换Type Cast
  3. Tomcat虚拟目录
  4. H5页面在iOS网页数字颜色自动被改变成蓝色
  5. Opencv笔记(十三)——图像的梯度
  6. java for 面试题_Java面试题整理
  7. 大数据时代:数据质量逐渐成关注焦点
  8. nginx关闭favicon.ico 日志记录
  9. postfix和dovecot架设邮件服务器的一些记录1
  10. kafka+多线程实现案例+Callable
  11. 北大青鸟软件工程师 ACCP6.0课程体系
  12. word表格转图片线条不会缺失方法
  13. 城建税和教育费附加怎么计算
  14. Newton冷却定理微分数学公式推导
  15. ctf比赛/学习资源整理,记得收藏!
  16. 2017南京大学计算机考研复试分,2018.的南大复试考生,:2017南京大学中国古代史考研复试经...
  17. /usr/bin/ld: cannot find -lxxx的错误
  18. 计算机用户名adm,adm那个电脑设置密码忘记了怎么处理
  19. javaFX学习之Menu下创建子菜单及菜单项的例子
  20. 【Mysql学习之旅-2】经典sql面试题及答案分析

热门文章

  1. Ant Design Pro 组件事件绑定 Input onChange
  2. mariadb 内存占用优化
  3. MVC+Ninject+三层架构+代码生成 -- 总结(四、數據層)
  4. Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP
  5. es5 编写类风格的代码
  6. Druid 配置 wallfilter
  7. 菜鸟物流云是如何帮助快递合作伙伴解决双11巨大业务负荷的?
  8. buildroot httpd php
  9. Mysql列类型-数值型
  10. Puppet扩展篇1-自定义fact结合ENC(hirea)的应用实践