不光是查找值!“二分搜索”(1)
来源:互联网 发布:telnet 端口 编辑:程序博客网 时间:2024/05/17 08:08
(1)二分不仅可以在保证很低时间复杂度的情况下进行查找,在很多问题中都可以用二分来解决。下面介绍“二分”最基础的应用——查找。
(2)题意:给定长度为n的单调不下降数列a[n]和一个k,求满足a(i)>=k条件的最小的i。不存在的情况下输出n。
限制条件:
1,1<=n<=10^6.
2,0<=a[0]<=a[1]<=a[2]…<=a[n-1]<10^9.
3,0<=k<=10^9.
(3)测试数据:
7 2
1 2 2 3 4 5 6
(4)总结:注意二分过程中数据取值范围,以及最后结果的选取。
在此二分问题中,当中间值大于等于目标值时,寻找空间范围变为(lb,mid],反之则为(mid,ub]。所以最终正确结果必定为ub。
其次二分中,二分终止条件的选取也非常重要,在本题中终止条件比较明显。
(5)代码:
#include<iostream>using namespace std;const int MAX_N=1e3+6;int n,k,a[MAX_N];void solve(){ int lb=-1,ub=n; while(ub-lb>1){ int mid=(lb+ub)/2; if(a[mid]>=k)ub=mid; else lb=mid; } cout<<lb<<endl;}int main(){ ios::sync_with_stdio(false);cin.tie(0); cin>>n>>k; for(int i=0;i<n;i++)cin>>a[i]; solve();}
阅读全文
0 0
- 不光是查找值!“二分搜索”(1)
- 不光是查找值!"二分搜索"总结
- 不光是查找值!二分搜索
- [二分] 二分搜索,不光是用来查找值
- 挑战 3.1 不光是查找值!”二分搜索“ Dropping tests
- (1)线性查找和二分搜索
- 二分查找/二分搜索(binary_search)详解
- 二分查找算法(java)二分搜索
- 搜索算法----二分查找(折半查找)
- 搜索算法-二分搜索(折半查找)
- 不光是笑笑而已
- 二分搜索算法(折半查找)
- 查找算法(二)二分搜索法
- 二分搜索查找
- 二分搜索(查找)方法
- 二分查找、二叉搜索
- 二分查找算法、折半搜索、二分搜索
- 搜索算法二分查找法(折半查找法)
- 12.10周日
- CSS3(五)
- Excel在统计分析中的应用—第九章—非参数检验-Mann-Whitney U检验
- VS Code
- Partitioners
- 不光是查找值!“二分搜索”(1)
- POJ2385 Apple catching(dp)
- Andriod Dagger2依赖注入
- Python系列(二)之Python函数
- Java 关键字 synchronized 总结
- 项目设计之系统设计
- JAVA日常学习代码Demo快照记录1
- 图论之稳定婚姻问题
- HDU