惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
The Cloudflare Blog
IT之家
IT之家
V
V2EX
雷峰网
雷峰网
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
小众软件
小众软件
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
A
About on SuperTechFans
B
Blog
月光博客
月光博客
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI

博客园 - ScorpioLove

[面试]内存泄漏查找位置 1000 的阶乘有几位数? - 后续, 求解 终于又能登录了 [转] vim 中关于 tab 的使用技巧 ASCII Table 排列组合 模拟"九连环"的小算法 1000 的阶乘有几位数? 总结一下最近做得事 Debian 下安装 Java 开发环境 Debian etch 下安装配置支持 CJK 的 tex 系统 行频、场频与分辨率、刷新率 一些 Java 语言的基础细节 Some good articles for me Vim 命令 Big Integer Multiplication [转]Debian/Ubuntu下tetex3的gbk字体配置方法 - giv@kyxk.net [转]FVWM的配置文件 - archerC@kyxk.net I do
一个小题目
ScorpioLove · 2007-01-24 · via 博客园 - ScorpioLove

前几天,学校 BBS 上有人提了一个小问题,本来没想做,后来看了看回文,不自觉的考虑了一下。

题目如下:

有 36 匹马,每次比赛只能有 6 匹马参加,最少进行几次比赛可以得到 36 匹马中跑得最快的前 6 名。限制有:1)没有表 (每次比赛只能记名次);2)每匹马的速度在任何比赛中速度不变。

我的思路:

1) 36 匹马分 6 组,每组 6 匹,进行初轮比赛,记录各组内部名次;
2) 根据初赛结果,把每组第 1 名组合到一起,比赛,记录名次,并给每匹马一个权值,权值和名次相同;
3) 按照初赛的结果和比赛 2) 的结果,为每匹马赋一个权值,规则是:每匹马的权值是它初赛所在组的前一名的权值 +6。比如某匹马初赛时在小组内得了第 4 名,而它所在的小组的第 1 名在比赛 2) 中得了第 5 名,则该马的权值为:
5[小组第 1 的权值] +6[小组第 2 的权值] +6[小组第 3 的权值] +6[小组第 4 的权值] = 23;
4) 选择当前权值 >1 的最小的 6 匹马比赛,记录名次,根据此次名次更新这 6 匹马的权值,然后根据此次名次和初赛结果更新其他马的权值 (不包括权值为 1 的马),规则同前;
5) 判断当前权值 =1 的马的个数,=6 则结束,否则转到 4)。

由上述思路得到的次数为:

6[1)] + 1[2)] + 5[5 次 4)] = 12

不知能否还能更简,听说有 8 次的,不知是否可行...