T07 奥运排序问题

openjudge-实用Python程序设计测验题目1-54 阅读详情

描述

按要求,给国家进行排名。

输入描述:

有多组数据。 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。 接下来一行给出M个国家号。

输出描述:

排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名方式 如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例 如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4. 每组数据后加一个空行。

#include<iostream>
#include <iomanip>
#include <algorithm>

using namespace std;

typedef struct country {
    int golden;
    int medal;
    int people;
    int number;
    int rank[5];

} country;


void move(country c[], country c1[], int n, int j, int num) {    //将c中编号为num的国家移入c1中的j位置

    for (int k = 0; k < n; ++k) {
        if (c[k].number == num) {
            c1[j] = c[k];
            return;
        }
    }
}

void find_best(country a) {  //找到哪种方式下排名最靠前并输出
    int way = 1, rank = a.rank[1];
    for (int i = 2; i < 5; ++i) {
        if (a.rank[way] > a.rank[i]) {
            way = i;
            rank = a.rank[i];
        }
    }
    cout << rank << ":" << way << endl;
}

int main() {
    int n = 0, m = 0;  //国家数量、排名数量
    int num = 0;  // 用于接收国家的编号
    int time = 0; // 判断第几次,要是第一次就不输出\n
    while (::scanf("%d %d", &n, &m) != EOF) {
        if (time != 0) {
            cout << endl;
        }
        country c[n];   // 全部国家
        country c1[m];  //参与排名的国家

        for (int i = 0; i < n; ++i) {   // 接收所有国家信息
            cin >> c[i].golden >> c[i].medal >> c[i].people;
            c[i].number = i;

            for (int j = 0; j < 4; ++j) {
                c[i].rank[j + 1] = 1;
            }

        }
        for (int j = 0; j < m; ++j) {   //将c中编号为num的国家移入c1中的j位置
            cin >> num;
            move(c, c1, n, j, num);
        }

        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < m; ++j) {
                if (c[i].golden < c[j].golden) {
                    c[i].rank[1]++;
                }
                if (c[i].medal < c[j].medal) {
                    c[i].rank[2]++;
                }
                if ((double) (c[i].golden) / (double) (c[i].people) < (double) (c[j].golden) / (double) (c[j].people)) {
                    c[i].rank[3]++;
                }
                if ((double) (c[i].medal) / (double) (c[i].people) < (double) (c[j].medal) / (double) (c[j].people)) {
                    c[i].rank[4]++;
                }
            }
        }
        for (int i = 0; i < m; ++i) {
            find_best(c[i]);
        }
        time++;
    }
    return 0;
}

 这个题卡了好久,本来想用排序来做,后来发现极其麻烦,看有大佬说可以遍历然后排名++,换了这个思路之后就很快了

用例测试里有一个人口为0的用例,感觉就纯属智障,懒得管了,除此之外跑正常的用例都没问题,嘎嘎快。

基于python的奥运会历史数据分析【120年】 数据分析实战案例 阅读详情

相关推荐

【学生排名】

已支持(Java & JS & Python & C & C++),考察:自定义排序

优快云 2609

【毕业设计】奥运会数据分析与可视化 - python 大数据

🔥 Hi,大家好,这里是丹成学长的毕设系列文章!🔥 对毕设有任何疑问都可以问学长哦!这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是🚩奥运会数据集分析🥇学长这里给一个题目综合评分(每项满分5分)难度系数:4分工作量:4分创新点:3分🧿。

caxiou的博客 4095

【华为机试真题 Python实现】奥运会排行榜【2022 Q1 | 100分】

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!欢迎加微信:Ayemmar本文解法非最优解(即非性能最优)。2012 伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下: 1、首先 gold medal 数量多的排在前面; 2、其次 silver medal 数量多的排在前面; 3、然后 bronzemedal 数量多的排在前面; 4、若以上三个条件仍无法区分名次,则

1967

用Python动态条形图展示巴黎奥运会金牌榜

巴黎奥运会金牌榜

weixin_43790276的博客 1441

5个4000比特大状态置换算法的设计与分析

下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。

HuangJinLong2的博客 340

FOC-滑膜控制器SMC/滑膜观测器SMO

三相PMSM是一个非线性、强耦合的多变量控制系统,对于外界的扰动或者电机自身的参数发生变化时,传统的PI控制并不能满足实际的要求。因此可以引入滑模控制SMC,它对扰动和参数不敏感,响应速度也够快。简单来说就是,滑膜观测器就是通过采样与坐标变换得到的Ualpha,Ubeta,Ialpha,Ibeta四个参数值,获取。SMO叫滑膜观测器(Sliding Mode Observer),用于获取转子位置信息与转速信息。2、作为滑膜观测器SMO,获取电机角度与转速信息。之间的误差来设计滑膜观测器,并通过该误差。

小胡同学的工程师学习之路 1万+

网易互娱2022校园招聘在线笔试-游戏研发工程师(第一批)

文章目录 A 身份证合法性检查 B 田径排名 C永远的七日之都 考试题型:3道程序题 考试时间:(北京时间,UTC+08:00)2021年-08-07 19:30:00 -- 22:00:00 考试时长:150分钟 A 身份证合法性检查 题目描述: 身份证号码的第18位是由前17位和相应系数所决定。 权重系数a = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}。第18位= (各个位上的数 x对应位的系数)之和模11,若为10则为'X'。 htt...

qq_42815161的博客 4226

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 261

【Reading Notes】(4)Favorite Articles from 2021

其实波尔象限与巴斯德象限,在具体科研实践时其实是一样的,就是「把问题的底层原理搞清楚」,只是问题的来源有所不同。美国普林斯顿大学的唐纳德 · 斯托克斯(Donald E. Stokes)通过 4 个象限定义了不同的研究类型,其中基础研究包括纯基础研究(波尔象限)与由应用驱动的基础研究(巴斯德象限)公式认为,任何重复的自然图案,都是通过两种具有特定特征的事物(如分子、细胞)进行相互作用而产生的。(左上)相机画面,(左下)时间轴,(中)AI捕捉的选手动作,(右)每种技术的「裁判员看点」

bryant_meng 391

FLoRA: 基于异构低秩适应的联邦微调大语言模型

大语言模型(LLMs)的快速发展推动了人工智能的进步,预训练的LLMs可以通过微调适应各种下游任务。联邦学习(FL)通过利用客户端的本地数据进行原位计算,进一步增强了隐私保护的微调,消除了数据移动的需求。然而,考虑到LLMs的巨大参数量,微调LLMs对于资源受限且异构的FL客户端来说是一个挑战。之前的方法采用了低秩适应(LoRA)进行高效的联邦微调,但在LoRA适配器上使用了传统的FL聚合策略。这些方法导致了数学上不准确的聚合噪声,降低了微调效果,并且未能解决异构LoRA的问题。

tiger00O的博客 2065

从零搭建《火影忍者》手游服务端:Linux环境部署与全流程实战

游戏服务器后端开发是构建大型多人在线体验的核心技术,其原理涉及高并发网络通信、分布式系统架构与数据一致性保障。在技术价值上,一套稳定高效的服务端不仅能支撑海量玩家实时交互,更是游戏业务逻辑、经济系统和安全防线的基石。典型的应用场景包括MMORPG、回合制卡牌、SLG等中重度手游。本文以《火影忍者》IP的横版卡牌回合制手游为例,聚焦于**手工服务端**的完整搭建过程,详细拆解从Linux系统初始化、MySQL与**Redis**缓存部署、核心服务编译、到代理后台联调的全链路实践,为开发者深入理解游戏后端架构提

weixin_30800615的博客 336

SQL面试解题心法:从窗口函数到NULL安全的四大核心能力

SQL不仅是查询语言,更是数据逻辑与工程思维的交汇点。理解窗口函数(如DENSE_RANK、ROW_NUMBER)的语义差异、掌握多表JOIN中ON与WHERE的本质区别、规避NOT IN在NULL场景下的三值逻辑陷阱、精准处理时间字段的时区与索引问题——这些构成了现代数据岗位SQL能力的底层支柱。它们直接关联聚合控制、业务语义对齐、空值安全和性能可预期性四大技术价值,在电商类目排名、用户行为分析、部门薪资梯队、社交平台零互动页等真实场景中高频复现。本文聚焦Amazon、Microsoft、LeetCode

weixin_33841722的博客 277

例题讲解拉格朗日乘子法、线性可分支持向量机(SVM)的推导

支持向量机(Support Vector Machine, SVM)的简单推导及例题

zzzssszzzzsz的博客 5681

GPT-5.5不存在?揭秘大模型‘换脑子’背后的工程真相

大语言模型已从‘版本号驱动’迈入‘能力栈驱动’时代——所谓‘GPT-5.5’并非新基座模型,而是推理引擎升级、RAG增强、工具调用优化等工程化能力的外溢表现。其技术原理在于服务层解耦:基座模型(L1)保持稳定,而对齐层(L2)、推理引擎(L3)、服务中间件(L4)可独立迭代,带来响应更快、结果更准、多模态更自然等真实提升。这种演进显著降低部署成本、提升场景适配性,广泛应用于智能客服、金融研报、工业SOP生成等落地场景。识别真进步的关键,在于建立可验证的‘能力归因方法论’,而非追逐虚构编号。

weixin_30781775的博客 497

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。

山云的专栏 2068

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装

环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行

从事嵌入式linux android驱动开发,拥有全栈能力 473

HarmonyOS 6.1 实战:toggleLike方法会创建一个新的FigureModel实例并翻转其liked属性

引言在当今移动互联网生态中,潮玩盲盒社区已经成为年轻消费群体高度活跃的垂直社交场景。从POP MART到52TOYS,从线上抽盒到二手交易,整个潮玩产业链正在经历从线下实体向线上数字化的快速迁移。HarmonyOS 6.1.1作为华为全场景智慧生活操作系统的最新迭代版本,其ArkTS声明式UI框架在HarmonyOS ArkTS API 24阶段已经发展得极为成熟,为开发者提供了从类型系统、状态管理到组件化构建的一整套现代化前端开发范式。本文将以一个完整的潮玩盲盒社区单文件页面应用为例,深入剖析基于Harm

2501_92985290的博客 5116

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 110

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 14

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 436

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 362

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 77

AI和大模型—从克里金算法说开去

克里金算法源于矿业勘探,通过空间自相关性实现稀疏数据下的最优预测,核心优势在于不确定性量化。在AI大模型中,其等价于高斯过程,广泛应用于超参数优化、小样本建模与推理调度。尽管面临计算复杂度高、核函数选择难等问题,通过稀疏化、分治法与低秩近似可有效优化。该方法在降低训练成本、提升泛化能力及减少幻觉方面表现突出,尤其适用于高维、高成本的智能系统优化,具有重要借鉴价值。

fpcc的专栏 602

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 176

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 302

不同的二叉搜索树

互不相同的二叉搜索树的种数,以 j (1<=j<=i)为头节点,左子树是 j-1 个数,右子树就是 i - (j - 1) -1 = i - j个数。所以dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]头1 = 左子树0节点 * 右子树2节点,二叉搜索树就是排序树,左子树<根节点<右子树,左右子树也满足左子树<根节点<右子树。头2 = 左子树1节点 * 右子树1节点。所以dp[i] += dp[j-1] * dp[i-j]个节点组成且节点值从。

qq_44721738的博客 150
上一篇: T06 成绩排序
下一篇: 卸载vue-cli报错error
密言
博客等级 码龄6年 242粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值