摔手机问题

参考文章:
蓝桥杯 真题 测试次数(详解)--------Five-菜鸟级

『蓝桥杯』2018蓝桥初赛 测试次数(扔手机)——动态规划

双蛋问题:

然后,到目前为止,我数论和动态规划都不会……
个人觉得讲得最好的是这个:
蓝桥杯省赛B组第四题—测试次数( 摔手机 )
整理下评论区:

万物互联LP
我觉得用二叉查找树来理解好一点吧,有log2(n)(向下取整)+1次=树高

在这里插入图片描述

zew1040994588 2019.03.03
哦哦哦 我懂了 博主 我把你的循环中的dp[ind][cnt]看成一个固定的值数了(无论k为多少,都是依据前面计算好的dp[][]+1来看),以dp[5][2]为例子,k=2的时间 比较dp[4][2]+1(值数为4)与Max(dp[3][1],dp[3][2])+1的最小值,k=3的时间,比较dp[4][2]+1(值数为4)与Max(dp[2][1],dp[2][2])+1的最小值,但是实际上当k=2的时间我的dp[5][2](取值为3)做了一次优化,再拿去与k=3的时间做比较,如果Max(dp[2][1],dp[2][2]+1)的最小值大于dp[5]2,我只需要取dp[5]2,反之若有更加优秀的解答,我就从k=3这一层开始仍,不从k=2这一层数开始,排除前面这一层即可。后面就是比较k=4有无比前面两层更优的解答。
弄懂了! 3Q

从k=2扔到k=ind-1的这个过程是为了检查在这些楼层扔一部手机是否能根据历史数据得到更优的结果; (我们已经计算过手机 cnt-1
部的所有情况和手机 cnt 部楼层数低于当前层数的所有数据) 最坏情况(也就是最大值)必然是确定ind-1层所用手机数+1;
先求得最大值后,再设定k在 2~ind-1 之间查找是否存在可能的最小值; 尝试在 2~ind-1
楼层扔手机会将产生两种可能,一种是手机破碎,那么还需要确定的就是手机少一部(cnt-1)确定 k-1 层数;
另一种自然是手机完好,那么还需要用 cnt 部手机确定 ind-k 层数,这两种情况所需的历史值我们都已经计算过了!
这体现的是不断通过选择最优分块的思路,一层一层确定~~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值