二分查找与二分答案(3)

本文通过两个实例介绍了如何使用二分查找优化枚举过程。第一个例子是关于从长方形巧克力中切出正方形,寻找满足条件的最大边长。第二个例子涉及计算最小的攻击间隔,使小Ho的护盾不被全部打爆。文章通过分析问题特点,利用二分查找降低时间复杂度,提高算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例1

image
 关于从长方形的巧克力中切出正方形的小巧克力,可以看下面的示意图:
image
 上图是一块5x6的巧克力分别切出1x1、2x2和3x3的示意图。切成1x1一共可以切出30块,切成2x2可以切出6块。四个1是一块,四个2是一块,以此类推。切成3x3一共可以切出2块。用公式来说的话,一块HxW的巧克力,如果要切出边长是x的正方形,一共可以切出⌊H/x]*[W/x]块正方形的巧克力
 现在题目的要求是,在保证至少切出K块正方形巧克力的前提下,要正方形的边长越大越好。首先我们应该很容易想到,正方形的边长越大,能切出来的数量就越少
 比如我们看样例是一块5x6的巧克力和一块6x5的巧克力。如果边长是1,那么一共可以切出来30+30=60块;如果边长是2,那么一共可以切出来6+6=12块;如果边长是3,那么一共可以切出来2+2=4块;如果边长是4,那么一共可以切出来1+1=2块。如果边长是5,那么也是2块。
 因为题目要求至少保证10块,所以答案就是2。因为边长是2可以切出12块;而再大一点边长是3的话就只能切出6块了。

思路1 暴力枚举

 从小到大枚举边长x;对于确定的x,计算N块巧克力一共能切出多少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数学家是我理想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值