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

二分算法模板

时间:2014-06-17 21:19:25      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   http   tar   

二分算法求最值,掌握了算法的本质和模板,主要就是答案验证过程,验证过程经常使用贪心算法。

关键是根据题目要求设立命题check(x)。

验证答案mid:
Check(mid):是否成立?
求满足条件Check(mid)的最小值:
–if  check(mid) then r:=mid else l:=mid+1;
求满足条件Check(mid)的最大值:
–if  check(mid) then l:=mid else r:=mid-1;

模板一:求满足条件check(mid)的最小值。

bubuko.com,布布扣
 1 //返回满足条件check(x)成立的最小的x.
 2 function find1:longint;
 3     var l,r,mid:longint;
 4     begin
 5       l:=1; r:=n;
 6       while l<r do
 7         begin
 8           mid:=(l+r) div 2;
 9           if check(mid) then r:=mid
10           else l:=mid+1;
11         end; //l=r
12       exit(l);
13     end;
View Code

 

模板二:求满足条件check(mid)的最大值。

bubuko.com,布布扣
 1 //返回满足条件check(x)成立的最大的x。
 2  function find2:longint;
 3     var l,r,mid:longint;
 4     begin
 5       l:=1; r:=n;
 6       while l<r do
 7         begin
 8           mid:=(l+r+1) div 2;
 9           if check(mid) then l:=mid
10           else r:=mid-1;
11         end; //l=r
12       exit(l);
13     end;
View Code

 

二分算法模板,布布扣,bubuko.com

二分算法模板

标签:style   class   blog   code   http   tar   

原文地址:http://www.cnblogs.com/ssfzzzc/p/3792118.html

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