某次网络赛的二分题,最大值最小化还是最小值最大化来的。。忘了 #include<cstdio> #include<stdlib h=""> #include<string h=""> #include<string> #include<cmath> #include<cstring> #include<algorithm> #include<map> #include<set> #include<queue> #include<vector> using namespace std; int a[500005]; int n,k,l; int judge(int x) { int i; int last=0; int cur=1,flag=0,count=0;; while(1){ // printf("%d %d\n",x,n); while(a[cur]<=a[last]+x&&cur<n 2="" cur="" count="" printf="" d="" n="" cur="" if="" last="=cur-1)" flag="1;" break="" if="" cur="=n+2)" break="" last="cur-1;" printf="" d="" d="" n="" flag="" count="" if="" flag="=1||count">k) return 1; return 0; } int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); while(scanf("%d%d%d",&l,&n,&k)!=EOF){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); a[0]=0; a[n+1]=l; sort(a,a+n+1); int min=0,max=l+1; while(min+1<max) { int mid=min+(max-min)/2; if(judge(mid)) { min=mid; } else { max=mid; } // printf("%d\n",mid); // printf("%d\n",mid); } printf("%d\n",max); } return 0; } </n></vector></queue></set></map></algorithm></cstring></cmath></string></string></stdlib></cstdio>