标签:des style color io os 使用 ar strong for
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 6372 | Accepted: 3181 |
Description
Input
Output
Sample Input
5 3 1 2 8 4 9
Sample Output
3
题意:
有N个牛舍,第i个在Xi位置,同时有M头牛,将这M头牛放于牛舍中,使每头牛之间距离最大化。
思路:
因为无法直接确定每头牛的距离,我们可以考虑找到所有牛之间距离的最小值,利用二分从大到小搜索知道出现满足crt<N&&X[crt]-X[last]>d,此时的X[crt]-X[last]表示第crt个牛舍
与上一个可放置牛的牛舍距离,若大于d,则说明该crt或crt-1位置的牛舍处于临界点,可放置牛,若小于d则表示未达临界点,crt++,继续搜索。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
const long MAXN=100000;
const long INF=1000000000;
long X[MAXN];
long N,M;
int Tdfs(long d)
{
long last=0;
for(int i=1;i<M;i++){
long crt=last+1;
while(crt<N&&X[crt]-X[last]<d){
crt++;
}
if(crt==N)return 0;
last=crt;
}
return 1;
}
int main()
{
int i;
long lb,ub,mid;
while(cin>>N>>M)
{
lb=0,ub=INF;
for(i=0;i<N;i++)
cin>>X[i];
sort(X,X+N);
while(ub-lb>1){
mid=(lb+ub)/2;
if(Tdfs(mid))
lb=mid;
else
ub=mid;
}
cout<<lb<<endl;
}
return 0;
}
POJ 2456 Aggressive cows(二分搜索最大化最小值)
标签:des style color io os 使用 ar strong for
原文地址:http://blog.csdn.net/u014492609/article/details/39558077