【PAT甲级】1025 PAT Ranking (25 分)(结构体排序,MAP<string,int>映射)
题意:
输入一个正整数N(N<=100),表示接下来有N组数据。每组数据先输入一个正整数M(M<=300),表示有300名考生,接下来M行每行输入一个考生的ID和分数,ID由13位整数组成。求输出所有考生的数量并且按照考生在全体中的成绩排名以及ID的字典序输出ID和名词,并标注考生所在的考场编号以及他在考场中的排名。
AAAAAccepted code:
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
typedef struct anss{
string s;
int final_rank;
int local_num;
int local_rank;
};
anss ans[];
typedef struct testee{
string num;
int score;
};
testee t[][];
testee a[];
bool cmp(testee a,testee b){
return a.score>b.score;
}
bool cmp1(anss a,anss b){
if(a.final_rank!=b.final_rank)
return a.final_rank<b.final_rank;
return a.s<b.s;
}
int cnt[];
int main(){
int n;
cin>>n;
int tt=;
int tot=;
for(int i=;i<=n;++i){
int m;
cin>>m;
cnt[i]=m;
for(int j=;j<=m;++j){
string s;
int x;
cin>>s>>x;
t[i][j].num=s;
t[i][j].score=x;
a[++tot].num=s;
a[tot].score=x;
mp[s]=++tt;
ans[tt].s=s;
ans[tt].local_num=i;
}
}
for(int i=;i<=n;++i){
sort(t[i]+,t[i]++cnt[i],cmp);
int no=;
int tmp=;
ans[mp[t[i][].num]].local_rank=++no;
for(int j=;j<=cnt[i];++j)
if(t[i][j].score!=t[i][j-].score){
ans[mp[t[i][j].num]].local_rank=++no;
tmp=no;
}
else{
ans[mp[t[i][j].num]].local_rank=tmp;
++no;
}
}
int sum=;
for(int i=;i<=n;++i)
sum+=cnt[i];
sort(a+,a++sum,cmp);
int no=;
int tmp=;
ans[mp[a[].num]].final_rank=++no;
for(int i=;i<=sum;++i)
if(a[i].score!=a[i-].score){
ans[mp[a[i].num]].final_rank=++no;
tmp=no;
}
else{
ans[mp[a[i].num]].final_rank=tmp;
++no;
}
sort(ans+,ans++sum,cmp1);
cout<<sum<<"\n";
for(int i=;i<=sum;++i)
cout<<ans[i].s<<" "<<ans[i].final_rank<<" "<<ans[i].local_num<<" "<<ans[i].local_rank<<"\n";
return ;
}
【PAT甲级】1025 PAT Ranking (25 分)(结构体排序,MAP<string,int>映射)的更多相关文章
- PAT 甲级 1028. List Sorting (25) 【结构体排序】
题目链接 https://www.patest.cn/contests/pat-a-practise/1028 思路 就按照 它的三种方式 设计 comp 函数 然后快排就好了 但是 如果用 c++ ...
- GO学习-(38) Go语言结构体转map[string]interface{}的若干方法
结构体转map[string]interface{}的若干方法 本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的"坑",也有你需要知道的若 ...
- PAT 甲级 1025 PAT Ranking
1025. PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Programmi ...
- PAT 甲级 1071 Speech Patterns (25 分)(map)
1071 Speech Patterns (25 分) People often have a preference among synonyms of the same word. For ex ...
- PAT 乙级 1085. PAT单位排行 (25) 【结构体排序】
题目链接 https://www.patest.cn/contests/pat-b-practise/1085 思路 结构体排序 要注意几个点 它的加权总分 是 取其整数部分 也就是 要 向下取整 然 ...
- PAT 甲级 1016 Phone Bills (25 分) (结构体排序,模拟题,巧妙算时间,坑点太多,debug了好久)
1016 Phone Bills (25 分) A long-distance telephone company charges its customers by the following r ...
- PAT甲级——1025 PAT Ranking
1025 PAT Ranking Programming Ability Test (PAT) is organized by the College of Computer Science and ...
- 【PAT甲级】1070 Mooncake (25 分)(贪心水中水)
题意: 输入两个正整数N和M(存疑M是否为整数,N<=1000,M<=500)表示月饼的种数和市场对于月饼的最大需求,接着输入N个正整数表示某种月饼的库存,再输入N个正数表示某种月饼库存全 ...
- PAT 甲级 1020 Tree Traversals (25分)(后序中序链表建树,求层序)***重点复习
1020 Tree Traversals (25分) Suppose that all the keys in a binary tree are distinct positive intege ...
- PAT 甲级 1146 Topological Order (25 分)(拓扑较简单,保存入度数和出度的节点即可)
1146 Topological Order (25 分) This is a problem given in the Graduate Entrance Exam in 2018: Which ...
随机推荐
- Flume基础学习
Flume是一款非常优秀的日志采集工具.支持多种形式的日志采集,作为apache的顶级开源项目,Flume再大数据方面具有广泛的应用 首先需要在Flume的解压目录中conf文件夹中将flume-en ...
- 91云服务器网络带宽测试,IO测试、全国ping测试
91yun服务器测试一键包介绍 一键包主要是为了让大家快速对服务器的基本状况有一个了解.考虑到天朝的网络出口问题,所以这个一键包更加偏向网络的测试. 影响测试耗时主要是下载,整个测试如果是能跑满100 ...
- C#面向对象三大特性:多态
什么是多态 公司最近为了陶冶情操,养了几种动物(Animal),有猫(Cat).狗(Dog).羊(Sheep),这些动物都有共同的特性,会吃(Eat).会叫(Shout),但是它们吃的不同,叫的也不同 ...
- MySQL导出数据到文件报错
执行如下语句: mysql> select * from users into outfile "F:\Develop\MySQL57\Uploads\users.txt" ...
- python应用-pycharm新建模板默认添加shebang编码作者时间等信息
1.pycharm4.5激活码 用户名: yueting3527 注册码: ===== LICENSE BEGIN ===== 93347-12042010 00001FMHemWIs"6w ...
- 浏览器 User-Agent 整理
也可以去这里查询:http://tools.jb51.net/table/useragent window.navigator.userAgent 1) Chrome Win7: Mozilla/5. ...
- CCF认证 2019-12-3
分析 后面的数据,坐标分布太离散,不能用一个二位数组来模拟垃圾分布.因此,考虑用一个数组记录每个垃圾点的位置. 先根据x坐标.再根据y坐标进行排序. 再遍历数组中的每一处垃圾点,判断其是否能建回收站( ...
- PyQt5单元格操作大全
1.显示二维列表数据(QTableView)控件 '''显示二维列表数据(QTableView)控件数据源model需要创建一个QTableView实例和一个数据源model,然后将其两者关联 MVC ...
- WinForm开发(6)——C#/winform程序打包部署时,如何把SQL数据库一起打包进去
打包数据库到安装程序中 方法1. 备份/恢复先备份数据库:backup database 数据库 to disk='c:\备份.bak' 将备份文件打包到安装程序中. 在第一次运行程序的时候,进行数据 ...
- ServerSuperIO开发记录
1.需要编写DriverCommand来支撑协议驱动,实现ProtocolCommand抽象类,在驱动初始化时,会加载同一个程序集内的所有实现了IProtocolCommand接口的所有命令,并存储在 ...