博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分边界
阅读量:5159 次
发布时间:2019-06-13

本文共 1227 字,大约阅读时间需要 4 分钟。

最大值

 while l<=r do 左开右开

 mid:=(l+r) div 2;

if ok then l:=mid+1 ans:=mid

else r:=mid-1

ans:=r;

 

inc(r) X

while l<r do 左闭右开

mid:=(l+r) div 2

if ok then l:=mid

else r:=mid

ans:=l

 

inc(r)左开右开

while l<r do

mid:=(l+r) div 2

if ok then l:=mid+1//ans:=mid

else r:=mid

ans:=l-1 or r-1 //ans

 

while l<r do 左闭右不确定 直到左右相等

mid:=(l+r+1) div 2

if ok then l:=mid

else r:=mid-1

l r

最小

while l<r do 左不确定右闭

mid:=(l+r) div 2

if ok then r:=mid

else l:=mid+1

l r

while(l<=r){ int mid=l+r>>1; for(i=f=1;i<=n && f<=m;i++,f++) while(f<=m && abs(a[i]-b[f])+abs(b[f])>mid) f++; if(i==n+1 && f<=m+1) ans=mid,r=mid-1; else l=mid+1; ans l

while (l<r) do begin

m:=(l+r) div 2;
s:=a[0]; u:=0;
for i:=1 to n do
if (a[i]-s>=m) then s:=a[i] else inc(u);
if (u>p) then r:=m-1 else begin l:=m+1;ans:=m;end;
end;

 

 

repeat mid:=(l+r) div 2;s:=0;f:=0; for i:=l to mid do begin inc(sum[b[i].s],b[i].d);dec(sum[b[i].t+1],b[i].d); end; for i:=1 to n do begin inc(s,sum[i]); if s>rr[i] then begin f:=-1;break;end; end; if f=-1 then begin r:=mid; for i:=l to mid do begin dec(sum[b[i].s],b[i].d);inc(sum[b[i].t+1],b[i].d); end; end else l:=mid+1; until l=r; if l=m+1 then writeln(0) else begin writeln(-1); writeln(l); end;

转载于:https://www.cnblogs.com/wyh447154317/p/8684643.html

你可能感兴趣的文章
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>