这道题的基本题意为给你n个畜栏、c头牛,把这c头牛放在其中c个畜栏里,让牛与牛之间离得尽可能的远,要求求满足条件的牛与牛之间的最小距离。
源代码如下:
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{ int n,c,a[100001],i,j,mid,min,max;
scanf("%d%d",&n,&c);
for(i=0;i<n;++i)
scanf("%d",&a[i]);
sort(a,a+n);
min=0;
max=a[n-1];
while(max-min>1)
{ int m=1;
mid=(min+max)/2;
for(i=1,j=0;i<n;++i)
if(a[i]-a[j]>=mid)
{ ++m;
j=i;
}
if(m>=c)
min=mid;
else max=mid;
}
printf("%d\n",min);
}
需要注意的是while里的循环条件要用max-min>1,如果用max>min的话,则无限循环没有结果输出。