HDU - 3789 奥运排序问题(暴力)

2023-11-02

按要求,给国家进行排名。
Input
有多组数据。
第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。
第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。
接下来一行给出M个国家号。
Output
排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例
对每个国家给出最佳排名排名方式 和 最终排名
格式为: 排名:排名方式
如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例
如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4.
每组数据后加一个空行。
Sample Input
4 4
4 8 1
6 6 2
4 8 2
2 12 4
0 1 2 3
4 2
8 10 1
8 11 2
8 12 3
8 13 4
0 3
Sample Output
1:3
1:1
2:1
1:2

1:1
1:1
Sponsor
本题最大的一个坑,就是题目,很容易让人产生歧义,错了好多次才对。

注意题目中:“按要求,给国家进行排名。” “第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。”

题目的真正的意思是对需要输出的M个国家里面进行排序,而不是在全部国家里面。
别看代码很长其实大部分都是重复的。

#include <stdio.h>
#include <string.h> 
#include<algorithm>
using namespace std; 
int a[1000],b[1000],c[1000],a11[10],a1[1000],b1[1000],c1[1000],nes[1000];

int main()
{
	int n,m,j,i,k,k1,k2,k3,k4;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
    	for(i=0;i<n;i++)
	    {
	    	scanf("%d%d%d",&a[i],&b[i],&c[i]); 
		}
		memset(a1,0,sizeof(a1));
		memset(b1,0,sizeof(b1));
		memset(c1,0,sizeof(c1));
		for(j=0;j<m;j++)
		{
			scanf("%d",&k);
			nes[j]=k;
			a1[k]=a[k];
			b1[k]=b[k];
			c1[k]=c[k];
		}
		for(j=0;j<m;j++)
		{
			k=nes[j];
			k1=1;
			for(i=0;i<n;i++)
			{
				if(a1[i]>a1[k])
				{
				  k1++;	
				}
			}
			a11[0]=k1;
			if(k1==1)
			{
				printf("1:1\n");
				continue;
			}
			
			k2=1;
		    for(i=0;i<n;i++)
			{
				if(b1[i]>b1[k])
				{
				  k2++;	
				}
			}
			a11[1]=k2;
			if(k2==1)
			{
				printf("1:2\n");
				continue;
			}
			
			
			k3=1;
			for(i=0;i<n;i++)
			{
				if((a1[i]*1.0/c1[i])>(a1[k]*1.0/c1[k]))
				{
				  k3++;	
				}
			}
			a11[2]=k3;
			if(k3==1)
			{
				printf("1:3\n");
				continue;
			}
			
			
			k4=1;
			for(i=0;i<n;i++)
			{
				if(b1[i]*1.0/c1[i]>b1[k]*1.0/c1[k])
				{
				  k4++;	
				}
			}
			a11[3]=k4;
			if(k4==1)
			{
				printf("1:4\n");
				continue;
			}
			
			
			
			sort(a11,a11+4);
			
			if(a11[0]==k1)
			{
				printf("%d:1\n",a11[0]);
				continue;
			}

			if(a11[0]==k2)
			{
				printf("%d:2\n",a11[0]);
				continue;
			}
			if(a11[0]==k3)
			{
				printf("%d:3\n",a11[0]);
				continue;
			}
			if(a11[0]==k4)
			{
				printf("%d:4\n",a11[0]);
				continue;
			}
				
		}
		printf("\n");
	}
    

	
 return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDU - 3789 奥运排序问题(暴力) 的相关文章

随机推荐

  • 使用tensorflow训练模型时可能出现nan的几种情况

    最近在做基于MTCNN的人脸识别和检测的项目 在训练模型的过程中总是会不定时地出现损失值为nan的情况 Debug了好久终于找到了问题所在 这里总结以下可能出现nan的几种情况 1 在分类问题中 我们经常使用到交叉熵损失函数 需要注意的是
  • thymeleaf加载数据失败

    在使用thymeleaf进行传送模型数据的时候 发现只有return数据 没有对应的页面 后台代码如下 前端代码如下 应该将 RestController 改成 Controller 测试成功 原因 如果使用 RestController注
  • idea如何开启Run Dashboard

    1 使用场景 IDEA开发工具中以 run 或 debug 方式启动多个 SpringBoot 应用时 日志控制台排开在窗口上方 服务间调用涉及日志追踪时 不方便快速切换来查看日志信息 如下图所示 IDEA提供了强大Dashboard功能
  • css的层叠顺序

    css中用z index来控制定位元素的层叠顺序 z index integer auto 整数值越大 元素离我们越近 一旦给一个定位元素设定了z index的值 不是auto 那么它就为它的所有后代建立了一个新的局部层叠上下文 如
  • Kafka系统学习

    Kafka学习视频 文章目录 一 Kafka 概述 二 消息队列 传统消息队列的应用场景 使用消息队列的好处 消息队列的 两种模式 三 Kafka 基础架构 四 Docker安装 Kafka Kafka命令行 六 Kafka架构深入 Kaf
  • VMware Pro下Centos 8虚拟机网络配置与克隆

    网络配置对于小白来讲是非常麻烦的 所以针对VMware Pro下的虚拟机网络配置进行记录 另外也会记录一下克隆虚拟机的一个过程 这个对测试集群的部署是非常有用的 注意一定是VMware Pro 因为Player免费版无网络配置功能 环境安装
  • 浪潮服务器更换硬盘_浪潮K1 Power E950百万豪机拆机指南

    不久前 浪潮商用机器一位架构师背着老板把浪潮K1 Power Linux服务器给 解剖 了 但是有网友质疑说顶多算半个拆机 不过瘾 安排 不过这次拆的可是价值百万的豪华机型 浪潮K1 Power E950 价值百万可不是随口说说 不信 看基
  • 数据库——MYSQL复习

    单表查询 1 查询指定列 select id name from t student 2 查询全部列 select from t student 3 查询经过计算的值 select id age 18 from t student 4 消除
  • 接口测试持续集成详解

    一 持续集成概述 1 持续集成简介 持续集成 Continuous Integration 简称CI 是一种软件开发实践 即团队开发成员经常集成他们的工作 通常每个成员每天至少集成一次 也就意味着每天可能会发生多次集成 持续集成的目的 让产
  • eclipse 找不到或无法加载主类 ClassNotFoundException

    项目右键 Builde path gt Configure Build Path gt
  • 02 编程语言与Python介绍

    编程语言与Python介绍 一 引子 二 编程语言分类 2 1 机器语言 2 2 汇编语言 2 3 高级语言 2 3 1 编译型 如C语言 2 3 2 解释型 如python 2 4 总结 三 Python介绍 3 1 Python解释器的
  • springboot系列 @ComponentScan和@EnableAutoConfiguration的区别

    研究springboot源码 在网上看相关博客的时候对 ComponentScan和 EnableAutoConfiguration两者之间的作用没有做过多的区分 导致我觉得他们两者都有扫描相关组建然后将符合要求的放入到ioc容器中 所以我
  • 接口MD5签名校验工具类

    签名算法过程 1 对除签名外的所有请求参数按key做ASCII升序排列 value无需编码 假设当前时间的时间戳是12345678 例如 有c 3 b 2 a 1 三个参 另加上时间戳后 按key排序后为 a 1 b 2 c 3 times
  • 安装启动引导器的设备(Device for boot loader installation):

    选择sdXY 第一个X是一个字母 表示磁盘个数 第二个Y是一个阿拉伯数字 代表分区 的那一项 也就是说 要将启动引导器安装在 分区中 dev xyzn dev 这个字串是所有设备文件所在的目录名 因为分区在硬盘上 而硬盘是设备 所以这些文件
  • async和await的讲解

    async和await的讲解 声明async函数的几个方法 普通的函数声明 async function A 声明一个函数表达式 let A async function async形式的箭头函数 let A async gt 初识asyn
  • sklearn Pipeline 函数用法

    0 导入包 from sklearn pipeline import Pipeline 1 定义 Pipeline 中文是管道 相当于将一系列的操作封装成一个函数 可以拿这个函数对其他数据进行相同的 流水线 操作 class sklearn
  • C++ linux下使用X11实现屏幕截图(续)

    使用libpng库将XGetImage获取到的内容保存为PNG格式的文件 以下是一个示例代码 include
  • PCL 计算点云的马氏距离(C++详细过程版)

    目录 一 算法概述 二 代码实现 三 结果展示 一 算法概述 计算每个点到最近邻点的马氏距离 最后根据马氏距离进行颜色渲染 马氏距离的详细介绍见 百度百科 马氏距离 二 代码实现 include
  • C# 数组增加元素_C#教程推荐

    C 是微软公司发布的一种面向对象的 运行 NET Framework和 NET Core 完全开源 跨平台 之上的高级程序设计语言 C 看起来与Java有着惊人的相似 它包括了诸如单一继承 接口 与Java几乎同样的语法和编译成中间代码再运
  • HDU - 3789 奥运排序问题(暴力)

    按要求 给国家进行排名 Input 有多组数据 第一行给出国家数N 要求排名的国家数M 国家号从0到N 1 第二行开始的N行给定国家或地区的奥运金牌数 奖牌数 人口数 百万 接下来一行给出M个国家号 Output 排序有4种方式 金牌总数