蓝桥杯真题 18省4-测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐
问题描述
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。
x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。
如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n
为了减少测试次数,从每个厂家抽样3部手机参加测试。
某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?
请填写这个最多测试次数。
注意:需要填写的是一个整数,不要填写任何多余内容。
输入
没有输入。
输出
输出一个整数。
提示
把答案放在输出语句中输出,例如C/C++语言可以用printf或cout。
注意:需要输出的是一个整数,不要输出任何多余内容。
思路
容易想到二分思路:不断二分范围,取中点,测验是否会摔坏,然后缩小一半范围,继续尝试,很显然,答案为logN(2为底)但是很显然,二分得出的答案是不对的。
这就有意思了,我们分析可以得出两种情况:
**情况1)**假设我们第一部手机在i层摔坏了,然后最坏情况还要试多少次?这时我们还剩一部手机,所以只敢一层一层试,最坏情况要试到i-1层,共试了i次。
**情况2)**假设我们第一部手机在i层试了,但是没摔坏,然后最坏情况还要试多少次?(这时发现算情况2时依旧是相似的问题,确定了可以用递归来解。)
**最优解(最小值)**是决策后两种情况的最差情况(最大值),我们的本能感觉应该就是让最差情况好一点,让最好情况差一点,这样比较接近正确答案。比如两部手机,一百层,我们可以在50层摔,没坏,这一次就很赚,我们没摔坏手机还把范围缩小了50层。如果坏了,就比较坑了,我们要从1试到50。虽然可能缩小一半,但是最坏情况次数太多,所以肯定要从某个低于五十的层开始尝试。
归纳表达式
假设我们的楼一共n层,我们的i可以取1-n任意值,有很多种可能的决策,我们的最小值设为f(n,k),n代表楼高(范围为1-100或101-200其实都一样),k代表手机数.
我们假设的决策是在第i楼扔
对于情况一,手机少了一部,并且我们确定了范围,一定在第i楼以下,所以手机-1,层数为i-1,这时f(n,k)=f(i-1,k-1).+1
对于情况二,手机没少,并且我们确定了范围,一定在第i楼之上,所以手机数不变,而层数-i层,这时f(n,k)=f(n-i,k).+1
归纳出
f(n,k)=min( max(f(i-1,k-1) ,f(n-i,k) ) i取1-n任意数 )+1
简单总结:怎么确定第一个手机在哪扔?每层都试试,哪层的最坏情况(max)最好(min),就去哪层扔。
动态规划思路:
如何解题,也就是如何写出来代码,我们接着往下。
这个动态规划到底怎么写?
**1.**我们摔手机测试按着运气再差的心态来说是吧!摔3次,恰巧都坏了呢?
**2.**令dp[i][j]为i层j个手机的最多(最优)测试次数。第一摔如何摔?每一层都可以作为第一摔。
**3.**设第一摔选在了第k层。
第一摔只能有两种结果:碎或者不碎。
(1)碎
如果碎了就让他们碎了都-1,楼层和手机,上面的层不再考虑,只需要在下面的层测试,手机少了一部,即 dp[k-1][j-1];
(2)不碎
如果没碎,下面的层不再考虑,只需要在上面的层测试,手机还是那么多,即 dp[i-k][j]
通过上面的分析:
因此,我们得出从k层开始摔,运气最坏需要 max(dp[k-1][j-1], dp[i-k][j]) + 1 次测试
k有多种选择,因此 最好的结果为: dp[i][j] = min( max(dp[k-1][j-1], dp[i-k][j]) + 1 )
所以存在最优解,故我们采取最优策略,求子问题的min即可,而碎或者未碎这种事情会存在最坏情况,故我们采用最坏情况的值,求子决策的max即可。
(思路来自博客。博客中大佬众多,在此抱拳仰望!互相学习!)
代码:
#include <stdio.h>
#define MAX(a,b) (a>b?a:b)
#define MIN(a,b) (a<b?a:b)
int main ()
{int dp[1001][4];for (int n = 1; n <=3; n++)//它的手机个数for (int i = 1; i <=1000; i++) //楼层数{dp[i][n]=dp[i-1][n]+1;// 当前最优次数[楼层][2]=1+当前最优次数[楼层-1][2];//最坏情况for (int j = 1; j <i&&n>1; j++)dp[i][n]=MIN(dp[i][n],MAX(dp[j-1][n-1], dp[i-j][n])+1);//找最优解}printf("%d",dp[1000][3]);return 0;
}
蓝桥杯真题 18省4-测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐相关推荐
- 蓝桥杯——第九届C语言B组第五题:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机;
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机; (1)对于这道题摔手机测试题呢!也就是求它的最优解;我一开始想到这道题的解法呢!是二分解,但你往里面具体的深入的看题,它是一个巨 ...
- 蓝桥杯真题 18省Ca4-第几个幸运数 问题描述 到x星球旅行的游客都被发给一个整数,作为游客编号。 x星的国王有个怪癖,他只喜欢数字3,5和7。 国王规定,游客的编号如果只含有因子:3,5,
问题描述 到x星球旅行的游客都被发给一个整数,作为游客编号. x星的国王有个怪癖,他只喜欢数字3,5和7. 国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品. 我们来看前10个幸运数 ...
- 蓝桥杯真题 18国1-换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种。 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。 小明有点强迫症,
问题描述 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元换出的 ...
- 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机 ...
- 第九届蓝桥杯真题解析JavaC组
第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...
- 蓝桥杯真题及答案JavaB组(第七届~第十一届)
1.十一届 1.1.解密(结果填空`5) Q: 小明设计了一种文章加密的方法:对于每个字母 c,将它变成某个另外的字符 Tc.下表给出了字符变换的规则: 在这里插入图片描述 例如,将字符串 YeRi ...
- python解答蓝桥杯真题1 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。。。
python解答蓝桥杯真题1 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记... 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月 ...
- 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和
注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...
- 蓝桥杯真题2017-2021
刷完近几年真题,感觉理解完之后,拿奖问题不大,本人这次获得2022年蓝桥杯javaB组省一,以下是历年javaB组省赛题目. 文章目录 2017年真题 一.购物单 二.纸牌三角形 三.承压计算 四.魔 ...
最新文章
- 2021年大数据ELK(九):使用VSCode测试分词器
- 用python画烟花-python实现浪漫的烟花秀
- mysql设置字段为空字符串_mysql数据类型字段插入空字符串自动填充为0报错
- 使用ng-container标签在SAP Spartacus里插入UI
- c#二叉树 取叶子节点个数_两种类似但是原理不同的算法求二叉树的所有叶子节点和...
- SEO之Google--PageRank优化剖析(一)
- 验证邮箱是否合法php,验证邮箱是否合法
- 在线教学质量评价系统java web_基于JavaWeb的教师教学质量评价系统
- c# gerber文件读取_PCB加工中Gerber文件的解析及其图形绘制和分割的研究
- HTML+CSS静态页面`西安旅游网站设计——西安旅游(7页) 大学生旅游网页作品 出行网页设计作业模板 学生游玩网页制作源代码下载
- 接口请求 Provisional headers are shown
- python 天天向上求几天数_Python十题(第2课)
- Total Uninstall 6安装使用
- (四)MySQL员工部门查询
- YD2606A、CSC7206A
- 前端vue/js刷新浏览器页面方法-案例
- 新郑计算机培训机构排名前十,新郑美术培训中心排名
- 寻找突破口语学习技巧
- 轻信别人可以“包装”,规避限购政策购房,会有那些后果?
- 谷歌翻译插件imtranslator安装使用步骤
热门文章
- 如何使用中国知网查询文献,并自动生成参考文献格式引文?
- Js(二)SyntaxError Cannot use import statement outside a module
- 电路基础学习笔记5:实验验证电压源与电流源的等效变换
- 重庆大学计算机学院郭松涛,C.-C.Jay Kuo教授访问重大计算机学院
- 电位计,电子尺0-5欧姆或0-50欧姆转换成电流电压0-10MA/0-10V转换器,隔离器
- table表格做一个表头斜线样式
- 小程序推广换量经验分享
- 2021年需要关注的15大软件测试趋势(一)
- html新年礼物,特别的新年礼物 特殊的新年礼物
- 生物素PEG叠氮,Biotin-PEG-Azide,N3-PEG-Biotin