25匹马5个跑道,选出最快的5匹马?

2023-10-13 04:18
文章标签 25 最快 匹马 跑道 选出

本文主要是介绍25匹马5个跑道,选出最快的5匹马?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

回顾之前问题:25匹马5个跑道,怎样选出最快的3匹
答:先分成5组比赛并组内排序(从1到5速度减慢),再让每组第一名比赛,按照每组第一名的比赛结果从快到慢对每组排序(从A到E速度减慢),此时共计比赛6轮,有:
A1 A2 A3 A4 A5 -> A组
B1 B2 B3 B4 B5 -> B组
C1 C2 C3 C4 C5 -> C组
D1 D2 D3 D4 D5 -> D组
E1 E2 E3 E4 E5 -> E组
这时已经得到,25匹马里,最快的是A1,要选出最快的3匹,那么只需找出第2、3名。
而2、3名只可能出现在:A2 A3,B1 B2,C1 里,让这5匹马再比赛一场,前2名就是要找出的25匹马里最快的2、3名。

现在要找出的是25匹马里,最快的前5名:
显然,找出最快的前5名,最多只需要比赛10场:
前5场赛让每个组组内完成排序,后5场每一场挑选当前组内的第1名参加,然后赛出当前场上剩余马匹里最快的那匹马。要找出前5名,那么自然最多只需要比赛5场。
有没有更快的方法?
依旧通过和之前一样比赛5场,完成组内排序,再比赛1场,首先找出最快的A1:
A1 A2 A3 A4 A5 -> A组
B1 B2 B3 B4 B5 -> B组
C1 C2 C3 C4 C5 -> C组
D1 D2 D3 D4 D5 -> D组
E1 E2 E3 E4 E5 -> E组

A1作为25匹马里最快的,放到结果集里,场上剩余马情况如下:
A2 A3 A4 A5 -> A组
B1 B2 B3 B4 B5 -> B组
C1 C2 C3 C4 C5 -> C组
D1 D2 D3 D4 D5 -> D组
E1 E2 E3 E4 E5 -> E组

此时要找出场上剩余马匹里最快的4匹马,那么这4匹马只可能出现在这些马里:
A2 A3 A4 A5 -> A组
B1 B2 B3 B4 -> B组
C1 C2 C3 -> C组
D1 D2 -> D组
E1 -> E组
为了更快找出场上剩余马匹里最快的4匹,不能像刚开始提到的方式那样,让A2,B1,C1,D1,E1比赛找出最快的,而是应该让:
A2 A3 A4 A5,B1 比赛。
因为A2 A3 A4 A5 里,可能最慢的A5也比B1要快,如果是这种情况,那么只需比赛这一场,就能直接确定场上剩余马匹里最快的4匹是A2 A3 A4 A5,总计比赛7次就能得出题目全部解。
即使不是这种情况,例如假若B1比A2慢,但比A3快,那么也能在这一次比赛里,迅速得出,剩余马匹里最快的是A2,其次是B1,这样一下子就能确定2个解,因为题目是找出前5名,而之前已经找出了第一名A1,那么接下来只需要找出场上剩余马匹里最快的前2名即可。
当然,A2 A3 A4 A5,B1比赛的结果不止以上2种,但无论比赛结果B1排第几名,最后处理流程都是B1前面的马(假设有x匹)作为最终结果里排名的第2名到第x+1名,B1则是最终结果里的第x+2名。剩余要找出的就是在剩余马里最快的5-(x+2)匹马了。
要找出最快的5-(x+2)匹马,只需要在剩余组里,重复第6、第7场比赛的方式,即先让每组最快的马比赛,让组和组之间排好序,找到场上剩余马里最快的马并放到结果集里,然后再让最快马所在的组,和第二快的组里的马比赛。重复这一过程。
易证:这种方式最慢比赛10次,最快比赛7次

这篇关于25匹马5个跑道,选出最快的5匹马?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200695

相关文章

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

2025年25届计算机毕业设计:如何实现高校实验室Java SpringBoot教学管理系统

✍✍计算机毕业编程指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、Python、微信小程序、大数据实战项目集 ⚡⚡文末获取源码 文章目录 ⚡⚡文末获取源码高校实验室教学管理系统-研究背景高校实验室教学管理系

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中

智力题:25匹马5条跑道找最快的3匹马,最少需要跑几次?

要找出25匹马中最快的3匹马,使用5条跑道,最少需要跑几次?我们可以通过逐步推理来解决这个问题。 第一步:分组比赛 首先,我们将25匹马分成5组,每组5匹马。每组进行一次比赛,这样我们就有5次比赛的结果。 组1:A1, A2, A3, A4, A5 组2:B1, B2, B3, B4, B5 组3:C1, C2, C3, C4, C5 组4:D1, D2, D3, D4, D5 组

芬兰手游业25年发展史

自2010年Rovio凭借《愤怒的小鸟》成功以来,芬兰的优秀开发者可以说是不断的引领手游潮流,有Frogmid、Seriously这样的小型团队,也有Supercell这样的世界收入冠军。除却收入之外,我们可以发现芬兰开发商的手游绝大多数都是具有独特创意的。 为什么芬兰手游业可以具有如此之大的竞争优势?其他人想要赶上应该怎么做?这个答案从来都不是能够简单作答的,因为它根植于芬兰的行业发展史,所以

图形API学习工程(25):实现法线贴图

工程GIT地址:https://gitee.com/yaksue/yaksue-graphics 目标 在《图形API学习工程(10):基础光照》中,我实现了最基础的光照,同时也表现了法线的作用。 在《图形API学习工程(11):使用纹理》中,工程已经能够加载纹理贴图。 这样,法线贴图 所需的准备已经完成,可以在工程里实现这个技术了。 (关于法线贴图的意义,可见上一篇博客《从“法线贴图的意义

【简历】25届南京某一本JAVA简历:简历通过率还好,但是拿不到OFFER

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 今天看一份25届南京某一本大学的Java简历。 这个简历呢,学校是一本。我们说上来先要定校招层次,这个层次就按照中厂来讲。因为现在很多的双非一本目标都是在中厂。 这个同学有个实习经历,一本有八成的同学主项目都是重复的。HR他只能看到项目重不重复,要点对不对他不知道,就从这个角度来看,这位同学

pytorch gpu国内镜像下载,目前最快下载

前言         pytorch的cpu的包可以在国内镜像上下载,但是gpu版的包只能通过国外镜像下载,网上查了很多教程,基本都是手动从先将gpu版whl包下载下来,然后再手动安装,如何最快的通过pip的命令安装呢?下面我细细讲下。 解决办法        目前国内有pytorch的gpu版的whl包只有阿里云上的:https://mirrors.aliyun.com/pytorch-w

GNU的伪操作 (25)

这里主要是 对 GNU的 各个伪操作进行 详细的解释。 先来看着几个 伪操作。 .byte,  .short,  .long,  .quad , .float ,  这个是关于 字节的。 .string   .ascii 是关于字符串的。 这个字符串编译器是可以自动在末尾补0 的。 举例: val:         .word 0x11223344         m

25版王道数据结构课后习题详细分析 第八章 8.2 插入排序

一、单项选择题 ———————————————————— ———————————————————— 解析:直接插入排序在最坏的情况下要做n(n-1)/2次关键字的比较,当n=5时, 关键字的比较次数为10。注意不考虑与哨兵的比较。 正确答案: ———————————————————— ———————————————————— 解析:由于序列初始基本有序,因此使用直接插入排序