二分法转化为判定问题
题目:
地址:https://www.acwing.com/problem/content/104/
这道题的二分性体现在平均值的最优性中
假设最大值为MAX,我们当前要判断的值为MID
当MID > MAX时,我们在当前条件下一定找不到符合假设的解,从而判断出比MID大的值全部无效。
当MID < MAX时,我们可以找到符合题意的解,那么小于MID的值也一定符合题意,也就不用再判断了。
判断一个值是否有符合题意的解,一般用check函数:
在求前缀和的式子中,最后减去avg是面对平均数有关问题的常用解决方法,将原来判断大于一个值的问题转化为判断是否 >0 的问题。
当求前缀和时,一般从1开始循环,这样当i=0时,其值自动为0,省去了考虑数组边界的问题。
双指针技巧:在check函数的第二个for循环中,我们用两个指针来求某两个位置之间的前缀和的差。
但是题目中的要求是至少包含F块土地,所以sum[ i ]并不一定是sum[ j ]的比较对象,因此只有在当前的sum[ i ] < minv时,才会更新minv,否则就继续使用之前的值。
主函数:
在实数的二分中,若题目要求保留k位数据,则我们一般讲while循环的条件设置为1e-(k+2)
且因为题目中要求的是向下取整,则我们最后的输出中必须时r * 1000,因为L < mid < r。
所以L向下取整得到的答案会有误差。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述