pta7-18奥运排行榜(模拟)
题目链接: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奥运排行榜(模拟)的更多相关文章
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- 18/9/22NOIP模拟考
18/9/22NOIP模拟考 其实本来是有多组数据的,出题人忘记在题面上加了 斜眼笑 期望得分:100:实际得分:100 由于种种原因,拿到题的时候已经过去了0.5h+... 然后因为这道题数据范 ...
- 18/9/21模拟赛-Updated
18/9/21模拟赛 期望得分:100:实际得分:0 qwq 拿到题目第一眼,我去,这不是洛谷原题(仓鼠找Sugar)吗 又多看了几眼,嗯,对,除了是有多组数据外,就是原题 然后码码码....自以为 ...
- 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)
题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...
- 18.4.09 模拟考 zhx P75
题目链接 https://files.cnblogs.com/files/lovewhy/P75.pdf P75 竞赛时间: ????年??月??日??:??-??:?? 注意事项(请务必仔细阅读) ...
- 18.09.22模拟赛T2 历史
网上基本上找不到这道题,何况LJJ还稍微改了一下...... 原题:传送门 题目描述 ljj 被S 国数不清的漂亮小姐姐所吸引,为了搞清楚为什么S 国有如此多的漂亮小姐姐,他决定研究S 国的历史. 根 ...
- 6.18 省选模拟赛 树 倍增 LCT
LINK:树 考虑暴力 保存每个版本的父亲 然后暴力向上跳.得分20. 考虑离线 可以离线那么就可以先把树给搞出来 然后考虑求k级祖先 可以倍增求. 如何判断合法 其实要求路径上的边的时间戳<= ...
- 6.18 省选模拟赛 字符串 LCT SAM
LINK:字符串 看起来很难做 考虑一种暴力 建立SAM后每次查询暴力扫儿子. 期望得分10分.实际得分10分. 另外一种发现每次扫儿子过于暴力 可以每次儿子向上做贡献 每次都暴力向上跳. 期望得分1 ...
- 4.18 省选模拟赛 无聊的计算器 CRT EXBSGS EXLucas
算是一道很毒瘤的题目 考试的时候码+调了3h才搞定. op==1 显然是快速幂. op==2 有些点可以使用BSGS 不过后面的点是EXBSGS. 这个以前学过了 考试的时候还是懵逼.(当时还是看着花 ...
随机推荐
- python中的递归小实例
#1.n! def fact(n): if n == 0: return 1 else: return n*fact(n-1)print(fact(10)) #2.斐波那契数列F(n)=F(n-1)+ ...
- 试用bus hound来分析STM32CubeMX来生成USB_HID_Mouse工程
Bus Hound (x64). Complements of www.perisoft.net STM32_HID_mouse Device - Device ID (followed by the ...
- openGL-------------别人的博客
https://blog.csdn.net/dcrmg/article/category/6505957 OpenGL(一)绘制圆.五角星.正弦曲线 ========================= ...
- redis 学习笔记3(哨兵模式下分布式锁的实现以及全局唯一id的生成)
redis实现分布式锁和全局唯一id应该是较为常见的应用. 实现基于redis的setNX,以及incr命令.还是比较简单的! 搭建环境以及配置好sping整合,做了下测试,有兴趣的载下来看看,自己做 ...
- linux文本处理笔记
cut: 按列操作文本 sort: 排序 uniq: 去重,去除连续重复行 cut -d 'delimiter' -f start-end filename.txt # -d 表示分割符号,del ...
- Haskell语言学习笔记(71)Semigroup
Semigroup class Semigroup a where (<>) :: a -> a -> a sconcat :: NonEmpty a -> a stim ...
- Vue2 实例中的 data 属性三种写法与作用:
<script src="https://unpkg.com/vue/dist/vue.js"></script> <div id="app ...
- splunk + docker-compose 实现自定义 index
splunk是一款非常优秀的运维管理平台.Splunk 是机器数据的引擎.使用 Splunk 可收集.索引和利用所有应用程序.服务器和设备生成的快速移动型计算机数据 . 使用 Splunking 处理 ...
- python判断任务是CPU密集型还是IO密集型
目前已经知道,在需要并发执行任务的时候,需要使用多线程或者多进程;如果是IO密集型任务,使用多线程,如果是CPU密集型任务,使用多进程;但问题是,经常我们会遇到一种情况就是:需要被执行的任务既有IO操 ...
- DOM精简版笔记
1.1. 基本概念 1.1.1. DOM DOM Document Object Model 文档对象模型 就是把HTML文档模型化,当作对象来处理 DOM提供的一系列属性和方法可以 ...