标签:style class blog code http tar
二分算法求最值,掌握了算法的本质和模板,主要就是答案验证过程,验证过程经常使用贪心算法。
关键是根据题目要求设立命题check(x)。
模板一:求满足条件check(mid)的最小值。
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;
模板二:求满足条件check(mid)的最大值。
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;
标签:style class blog code http tar
原文地址:http://www.cnblogs.com/ssfzzzc/p/3792118.html