当前位置: 首页 > news >正文

PAT 1012 The Best Rank

在这里插入图片描述
在这里插入图片描述
这一题主要是用哈希表+排序,类似的方法在之前的题目中也涉及到了

PAT 1009 Product of Polynomials

但这一题比较复杂的点在于,我们需要先找一个学生每科成绩的排名,再找在它每科成绩排名中,找出最优的排名,优先级是A>C>M>E。
大模拟法来一步步写。
需要注意的有两个点:
1.算平均成绩的时候需要四舍五入
2.要注意有分数相同的情况下,排名一样。
完整代码如下:

#include <iostream>
#include <limits.h>
#include <cstring>
#include <queue>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
unordered_map<string,vector<int>> mp;
unordered_map<string,vector<int>> ranks;
int N;
int M; 
bool cmp(pair<string,int> a,pair<string,int> b)
{if(a.second>b.second){return true;}else{return false;}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>N>>M;for(int i=0;i<N;i++){string id;int avg;int c;int m;int e;cin>>id>>c>>m>>e;avg=(int)((c+m+e)/3.0+0.5);mp[id]={avg,c,m,e};}vector<pair<string,int>> v;for(int i=0;i<4;i++){vector<pair<string,int>> v;for(auto it: mp){v.push_back({it.first,it.second[i]});} //这样你就得出了一个需要排序的pairsort(v.begin(),v.end(),cmp); //那么就可以根据这个排序情况来判断它这个排名for(int j=0;j<v.size();j++){int rank=1;if(j!=0&&v[j].second==v[j-1].second){rank=j;}else{rank=j+1;}ranks[v[j].first].resize(4);ranks[v[j].first][i]=rank; }}//这样就把所有的学生的各科的排名得出来了 //针对一个学生,我们要找到它的最强的rank//得出它最强rank从而输出最强rank对应的//学科int bestrank;for(int i=0;i<M;i++){string id;cin>>id;if(!ranks.count(id)){cout<<"N/A"<<endl;}else{int bestrank=ranks[id][0];char bestname='A';//找最佳的排名for(int j=1;j<ranks[id].size();j++){if(bestrank>ranks[id][j]){bestrank=ranks[id][j];if(j==1){bestname='C';}else if(j==2){bestname='M';}else{bestname='E';}}}cout<<bestrank<<" "<<bestname<<endl;}}return 0;} 

时间复杂度为O(NlogN+M)

http://www.dtcms.com/a/286482.html

相关文章:

  • QML vscode语法高亮和颜色区分。
  • 【vLLM 学习】Encoder Decoder Multimodal
  • Kotlin集合过滤
  • 有效的括号数据结构oj题(力口20)
  • 无人机传感器模组运行与技术难点分析
  • Axure RP 10 预览显示“无标题文档”的空白问题探索【护航版】
  • 美团闪购最新版 mtgsig1.2
  • LP-MSPM0G3507学习--04GPIO控制
  • 消息队列 2.RabbitMQ
  • Elasticsearch:ES|QL 改进的时间线
  • [3-02-01].第01章:框架概述 - Spring生态
  • 表单、表格字段,输入完毕后立即点击【保存】,导致数据未更新就被保存
  • 【教程】基于无人机的大豆光合效率研究
  • 赛思SLIC芯片、语音芯片原厂 赛思SLIC语音芯片ASX630:国产强“芯”赋能FTTR全光网络​
  • vscode 一直连不上远程,网络是通的,ssh 也能直接登录远程
  • 【科研绘图系列】R语言绘制分组箱线图
  • SDC Specical check setting的描述 - false path
  • Docker笔记-部署Redis集群
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • AWS(基础)
  • 网络基础10 :ACL真机实验
  • Redis原理之哨兵机制(Sentinel)
  • 【洛谷P1417】烹调方案 题解
  • ONNX模型使用指南:从零开始掌握跨领域模型部署
  • 图片平铺下去总是有个缝隙的解决方案
  • 塞舌尔公司的查册报告Certificate of Official Search是什么?有什么信息
  • 瀚高数据库开启Oracle兼容模块
  • vue2 面试题及详细答案150道(101 - 120)
  • ubuntu20.04使用unity3d做机器人仿真环境搭建
  • Python单例模式详解:从原理到实战的完整指南