第九届蓝桥杯省赛:测试次数

标题:测试次数

参考
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,
并且评定出一个耐摔指数来,之后才允许上市流通。
x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。
塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。
如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n
为了减少测试次数,从每个厂家抽样3部手机参加测试。
某次测试的塔高为1000层,如果我们总是采用最佳策略,
在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?
请填写这个最多测试次数。
注意:需要填写的是一个整数,不要填写任何多余内容。

题解:

如何推出 动态规范的转移方法
dp[i][j] 表示:在第 i 层 j 部手机的测试次数
假设需要测试 K 次 ,第一次在第 K 层扔下,
手机碎了则下次为: dp[k-1][j-1] (手机数 j-1, 层数在:1~ k-1,因为手机碎了,并且下降一层)
手机没有碎则下次为:dp[i+k-1][j] (手机数没有变 j , i+k-1 , )
为什么是(i + k-1)?因为需要 k 次测试就能测试出耐摔值,第一次测试碎了,还剩k-1次测试。
为什么不是 i+1 ? 因为如果每次都一层一层比较并一定不能在测试次数内测试出耐摔值。(前提已经知道了测试次数)
第二次同理:dp[i][j] = max(dp[k-1][j-1], dp[i+k-2][j]+1)
前提:初始化表格:dp[i][j] = i ;表示第 i 层的最坏测试次数为 i 次
所以:dp[i][j] = min(dp[i][j], max(dp[i-1][j-1]), dp[i+k-n][j]+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值