文章目录

  • 题目分析
  • 题目链接

题目分析

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

ac代码

 #include<bits/stdc++.h>using namespace std;const int K =6;int n , k , m;int p_score[K];struct Stu{string id;int score[K];int total,cnt;//重载小于号:排序bool operator< (const Stu& a)const{if(total!=a.total) return total> a.total;if(cnt!=a.cnt)  return cnt> a.cnt;return id< a.id;}//默认构造函数Stu(){}//重载构造函数Stu(string _id){id =_id;cnt = total = 0;for(int i=1; i <= k; i++)score[i]= -2; //初始化为-2,表示未提交;提交过=-1}//结构体内定义的函数void calc(){for(int i =1;i<=k;i++){if(score[i] == p_score[i]) cnt++;total += max(0,score[i]); //累加得分}}//结构体内定义的函数//判断是否成功编译bool submit(){ //编译通过得0分的也输出for(int i=1;i<=k;i++)if(score[i] >= 0) return true;return false;   }};unordered_map<string,Stu> students;//hash表,用来判断是否需要调用构造函数int main(){cin>> n>> k>> m;for(int i=1;i<=k;i++) cin>>p_score[i];while(m--){string u_id;int p_id, score1;cin>> u_id >> p_id>> score1;//没出现过,调用构造函数if(!students.count(u_id))  students[u_id] =Stu(u_id);students[u_id].score[p_id]=max(students[u_id].score[p_id],score1);  //每道题得分取最大值}vector<Stu> res;for(auto & person:students){auto& s=person.second; //得到结构体if(s.submit()){ //提交的判断:提交并且得分大于0s.calc();res.push_back(s);  //成功提交的同学压入vector}}sort(res.begin(),res.end()); //排序int rank=1; //排名for(int i=0; i<res.size();i++){if(!i || res[i].total != res[i-1].total) rank=i+1;cout<<rank<<" "<<res[i].id<<" "<<res[i].total;for(int j=1;j<=k;j++)if(res[i].score[j]==-2) cout<<" -";else if(res[i].score[j]==-1) cout<<" 0";else cout<<" "<< res[i].score[j];cout<<endl;    }}

题目链接

PAT甲级1075 PAT Judge

PAT甲级1075 PAT Judge:[C++题解]排序、结构体相关推荐

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

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

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

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

  3. 蓝桥杯 成绩排序——结构体

    蓝桥杯 成绩排序--结构体 问题描述 给出n个学生的成绩,将这些学生按成绩排序, 排序规则,优先考虑数学成绩,高的在前:数学相同,英语高的在前:数学英语都相同,语文高的在前:三门都相同,学号小的在前 ...

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

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

  5. PAT甲级1029 Median:[C++题解]贪心、二路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...

  6. PAT甲级1070 Mooncake:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 对单件从高到低排序. 需要注意的是总需要量d设成double,不要设成int. ac代码 #include<bits/stdc ...

  7. PAT甲级1008 Elevator:[C++题解]模拟

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...

  8. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...

  9. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

最新文章

  1. 决赛评委阵容重磅公布!6万大奖,超分辨率图像性能挑战赛最后召集令!
  2. 【备忘录】技术笔记整理。
  3. 支持回调处理 php函数,PHP支持回调的函数有哪些?
  4. python3多进程写时拷贝_python多进程实现复制文件
  5. Python趣味编程3则:李白买酒、猴子吃桃、宝塔上的琉璃灯
  6. 图的最短路算法(Dijkstra和Floyd-Warshall)
  7. rabbitmq入门-第一讲安装
  8. Win10彻底关闭Antimalware Service Executable占用内存过高问题
  9. GCC、VS对C++标准的支持情况总结(转载)
  10. unity 相机(物体)自动前移,单击屏幕后退
  11. 高分辨率图像剪切——目标检测
  12. 实战ASP.NET访问共享文件夹
  13. 如何显示电脑已连接的WiFi的密码
  14. 初学cesium时的一些笔记,过于潦草看看就好
  15. 故障分析 | OceanBase Proxy 无法连接 OBserver 集群
  16. 最全哔哩哔哩学习资源大整理,主要分为14大类,包含各个方面的学习资源
  17. java项目-第90期基于ssm的嘟嘟二手书商城系统
  18. 证书服务器 过期,iis7服务器证书过期如何换新的以及证书服务器
  19. x64 汇编跟 rax , eax ,ax ,ah ,al 的关系
  20. 中职中职计算机英语试题,中职英语试卷及参考答案

热门文章

  1. NSMutableParagraphStyle /NSParagraphStyle
  2. 2013年3月空调类品牌网络知名度排名
  3. CentOS系统bash: groupadd: command not found问题
  4. vc6.0中添加快捷注释
  5. [转]一个总成本花费100W的失败项目的小小反省
  6. att48数据集最优值10628的解
  7. c语言soket编程,C语言socket编程使用方法
  8. 10个linux awk文本处理经典案例,关于AWK的10个经典案例
  9. 第六章 逻辑回归-机器学习老师板书-斯坦福吴恩达教授
  10. C语言之详解#ifdef等宏