码迷,mamicode.com
首页 > 其他好文 > 详细

二分法

时间:2017-02-28 18:07:26      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:bsp   contract   lap   span   src   false   images   ++   stl   

二分搜索法,是通过不断缩小解可能存在的范围,从而求得问题最优解的方法。

1.从有序数组中查找某个值

技术分享

技术分享

STL以lower_bound函数的形式实现了二分搜索。类似方法还有upper_bound

 

2.假定一个解并判断是否可行

技术分享

技术分享

注意输出答案的格式

 

3.最大化最小值

技术分享

找到最大的d使得最近的两头牛的距离不小于d

(1)对牛舍的位置x排序

(2)第一头牛进x0

(3)若第i头放入了xj,则第i+1头放入满足xk-xj>=d的最小的xk

技术分享
 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<math.h>
 4 #include<algorithm>
 5 using namespace std;
 6 typedef long long ll;
 7 int n,m;
 8 double L[100005];
 9 bool judge(int len)
10 {
11     int last=0;
12     for(int i=1;i<m;i++)
13     {
14         int cur=last+1;
15         while(cur<n&&L[cur]-L[last]<len) cur++;
16         if(cur==n) return false;
17         last=cur;
18     }
19     return true;
20 }
21 int main()
22 {
23     cin>>n>>m;
24     for(int i=0;i<n;i++) cin>>L[i];
25     //sort(L,L+n);
26     int l=0,r=100000005;
27     while(r-l>1)
28     {
29         int mid=(l+r)/2;
30         if(judge(mid)) l=mid;
31         else r=mid;
32     }
33     cout<<l<<endl;
34     return 0;
35 }
View Code

 

4.最大化平均值

技术分享

技术分享

技术分享

技术分享

技术分享

 

二分法

标签:bsp   contract   lap   span   src   false   images   ++   stl   

原文地址:http://www.cnblogs.com/wangkaipeng/p/6479703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!