POJ 2456(二分哲学)

编程入门 行业动态 更新时间:2024-10-09 13:26:20

POJ 2456(二分<a href=https://www.elefans.com/category/jswz/34/1769917.html style=哲学)"/>

POJ 2456(二分哲学)

这题普通的二分会T…………


法一:只循环60遍,用ans记录答案(见标程)

法二:进行特判,若l+1==r 则 m=(l+r+1) shl 1 否则 m=(l+r) shl 1


Program P2456;
constmaxd=1000000000;maxn=100000;
varn,c,i,j,k:longint;a:array[1..maxn] of longint;
procedure sort(l,r:longint);
varm,i,k,head,tot,ans:longint;
beginfor k:=1 to 60 dobeginm:=(l+r) shr 1;head:=1;tot:=0;for i:=2 to n dobeginif a[i]-a[head]>=m thenbegininc(tot);head:=i;end;end;if tot>=c-1 then begin ans:=m; l:=m+1 end else r:=m-1;end;writeln(ans);end;
procedure qsort(l,r:longint);
vari,j,m,p:longint;
begini:=l;j:=r;m:=a[(l+r) shr 1];repeatwhile a[i]<m do inc(i);while a[j]>m do dec(j);if i<=j thenbeginp:=a[i];a[i]:=a[j];a[j]:=p;inc(i);dec(j);end;until i>j;if l<j then qsort(l,j);if i<r then qsort(i,r);
end;
beginread(n,c);for i:=1 to n do read(a[i]);qsort(1,n);sort(1,maxd);end.


更多推荐

POJ 2456(二分哲学)

本文发布于:2024-02-14 09:35:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762886.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:哲学   POJ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!