【专题总结】二分查找(持续更新)

本文详细介绍了二分查找算法在解决实际问题中的应用,通过多个竞赛题目的解题过程,阐述了如何利用二分查找优化时间复杂度,将原本线性的时间复杂度优化到对数级别。涉及的题目包括POJ 2456、POJ 1064、Codeforces 689C和689D等。
摘要由CSDN通过智能技术生成

假如我们遇到了这样的问题,问题要求我们在 y=f(x),(axb) 中寻找符合条件的 y ,其中 f 可以为显式函数或隐式关系。一种朴素的思路是在取值范围内枚举所有的 x ,然后判断 y 是否满足条件。这样的时间复杂度是 O(ba) 。但是当 ba 的值很大时(例如 107 )就太耗时了。此时若 y 能满足“二分性”(例如升序,降序),则每次在怀疑区间 [l,r] 内取中点 xmid (初始时 l=a,r=b ),再通过判断 f(xmid) 是否满足条件来修正(缩小)怀疑区间(更新 l r )。这样就可以将时间复杂度优化到 O(log(ba))


POJ 2456

大意

一维坐标轴上有 n 个位置,我们要把 c 个牛放在 n 个位置上。有许多方案可以放置这些牛。定义某个方案 s 中任意两只牛之间距离的最小值为 d[s] ,求对于所有的方案 s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值