题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114867245056

题意:给n个国家,以及每个国家的金牌数、奖牌数、人口数(百万)。以及m个来询问的国家,现在有4中排名方式(金牌数,奖牌数、人均金牌数、人均奖牌数),对来询问的每个国家给出对其最有利的排名方式以及排名。

思路:用4次sort就行,打表存进b数组,对每次询问输出相应的结果即可,注意一个坑点,比如两个国家金牌数相等,则在金牌数排行榜中这两个国家排名相同,在这wa

了一发。详见代码:(代码看着很长,其实都是重复的部分,可以写进一个循环的,懒得改了)

 #include<bits/stdc++.h>
using namespace std; struct node{
int gd,md,ps,id;
double p3,p4;
}a[]; bool cmp1(node x,node y){
return x.gd>y.gd;
} bool cmp2(node x,node y){
return x.md>y.md;
} bool cmp3(node x,node y){
return x.p3>y.p3;
} bool cmp4(node x,node y){
return x.p4>y.p4;
} int n,m,b[][]; int main(){
scanf("%d%d",&n,&m);
for(int i=;i<n;++i){
scanf("%d%d%d",&a[i].gd,&a[i].md,&a[i].ps);
a[i].id=i;
a[i].p3=a[i].gd*1.0/(a[i].ps*1.0);
a[i].p4=a[i].md*1.0/(a[i].ps*1.0);
}
sort(a,a+n,cmp1);
b[a[].id][]=;
for(int i=;i<n;++i)
if(a[i].gd==a[i-].gd)
b[a[i].id][]=b[a[i-].id][];
else
b[a[i].id][]=i+; sort(a,a+n,cmp2);
b[a[].id][]=;
for(int i=;i<n;++i)
if(a[i].md==a[i-].md)
b[a[i].id][]=b[a[i-].id][];
else
b[a[i].id][]=i+; sort(a,a+n,cmp3);
b[a[].id][]=;
for(int i=;i<n;++i)
if(a[i].p3==a[i-].p3)
b[a[i].id][]=b[a[i-].id][];
else
b[a[i].id][]=i+; sort(a,a+n,cmp4);
b[a[].id][]=;
for(int i=;i<n;++i)
if(a[i].p4==a[i-].p4)
b[a[i].id][]=b[a[i-].id][];
else
b[a[i].id][]=i+; while(m--){
int tmp;
scanf("%d",&tmp);
int t1,t2=;
for(int i=;i<=;++i)
if(t2>b[tmp][i])
t2=b[tmp][i],t1=i;
printf("%d:%d",t2,t1);
if(m) printf(" ");
}
printf("\n");
return ;
}

pta7-18奥运排行榜(模拟)的更多相关文章

  1. PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)

    PTA数据结构与算法题目集(中文)  7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分)   每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...

  2. 18/9/22NOIP模拟考

    18/9/22NOIP模拟考 其实本来是有多组数据的,出题人忘记在题面上加了   斜眼笑 期望得分:100:实际得分:100 由于种种原因,拿到题的时候已经过去了0.5h+... 然后因为这道题数据范 ...

  3. 18/9/21模拟赛-Updated

    18/9/21模拟赛 期望得分:100:实际得分:0  qwq 拿到题目第一眼,我去,这不是洛谷原题(仓鼠找Sugar)吗 又多看了几眼,嗯,对,除了是有多组数据外,就是原题 然后码码码....自以为 ...

  4. 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)

    题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...

  5. 18.4.09 模拟考 zhx P75

    题目链接 https://files.cnblogs.com/files/lovewhy/P75.pdf P75 竞赛时间: ????年??月??日??:??-??:?? 注意事项(请务必仔细阅读) ...

  6. 18.09.22模拟赛T2 历史

    网上基本上找不到这道题,何况LJJ还稍微改了一下...... 原题:传送门 题目描述 ljj 被S 国数不清的漂亮小姐姐所吸引,为了搞清楚为什么S 国有如此多的漂亮小姐姐,他决定研究S 国的历史. 根 ...

  7. 6.18 省选模拟赛 树 倍增 LCT

    LINK:树 考虑暴力 保存每个版本的父亲 然后暴力向上跳.得分20. 考虑离线 可以离线那么就可以先把树给搞出来 然后考虑求k级祖先 可以倍增求. 如何判断合法 其实要求路径上的边的时间戳<= ...

  8. 6.18 省选模拟赛 字符串 LCT SAM

    LINK:字符串 看起来很难做 考虑一种暴力 建立SAM后每次查询暴力扫儿子. 期望得分10分.实际得分10分. 另外一种发现每次扫儿子过于暴力 可以每次儿子向上做贡献 每次都暴力向上跳. 期望得分1 ...

  9. 4.18 省选模拟赛 无聊的计算器 CRT EXBSGS EXLucas

    算是一道很毒瘤的题目 考试的时候码+调了3h才搞定. op==1 显然是快速幂. op==2 有些点可以使用BSGS 不过后面的点是EXBSGS. 这个以前学过了 考试的时候还是懵逼.(当时还是看着花 ...

随机推荐

  1. 应用PLSQL Developer(技巧)

    以下是一些 PLSQL Developer的使用技巧. 转自:PLSQL developer常用技巧,作者:逍遥游xj

  2. UI学习网站

    以下是我收集的UI设计的网站提供给大家参考: 站酷 www.zcool.com.cn UI中国 www.ui.cn 学UI网 www.xueui.cn UIGREAT www.uigreat.com ...

  3. idea 关闭代码自动折叠,形参提示,行数栏图标,启动不默认打开上次的项目

    1,代码自动折叠 1.1,File > setting > Editor > General > Code Folding 1.2,勾选右侧不想要折叠的代码部分 2,形参提示 ...

  4. Linux 创建用户并赋予 Sudo 权限

    01,创建账号 => useradd admin 02,赋予密码 => passwd admin 03,修改 sudo 权限文件,使得该用户可以使用 sudo 命令 vim /etc/su ...

  5. 20165304实验一java开发环境熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...

  6. day02-格式化输出

    python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)% ...

  7. jquery实现增删改(伪)-老男孩作业day13

    使用jquery进行,文件的编写,实现自增id,删除,添加,编辑模式. jquery放在本地,src="jquery_js.js" 可以改成其他,或者在线的路径 readme &l ...

  8. python 阿狸的进阶之路(6)

    常用模块 json # 序列化 #将内存的数据存到硬盘中,中间的格式,可以被多种语言识别,跨平台交互数据 #json 可以将字典之类的数据类型存到字典中 import json dic = {&quo ...

  9. java序列化问题

    今天无意中看到了     redistemplet封装的类中,出现了序列化的字眼 ,了解下序列化的知识 1.什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化,(java中一般是用来保 ...

  10. 使用ansible安装docker以及docker-compose

    转自:https://www.cnblogs.com/jsonhc/p/7879028.html 环境三台centos7主机: master:192.168.101.14,node1:192.168. ...