完全看不懂题意。。。。百度搜搜才看懂题意 然后就参考代码了 和yougth的最大化()nyoj914差不多的方法 二分+贪心 #include stdio.h #include algorithm using namespace std ; int c , a [ 100005 ], n ; boo
完全看不懂题意。。。。百度搜搜才看懂题意 然后就参考代码了
和yougth的最大化()nyoj914差不多的方法 二分+贪心
#include <algorithm>
using namespace std;
int c,a[100005],n;
bool judge(int k)
{
int p=a[0],cnt=1;//也就这里注意点 从1开始 自己想想为啥
for(int i=1;i<n;i++)
{
if(a[i]-p>=k)
cnt++,p=a[i];
if(cnt>=c)
return true;
}
return false;
}
int bin_search(int right)//步步逼近最小值。
{
int left=0,mid;
while(left<=right)
{
mid=(left+right)/2;
if(judge(mid))
left=mid+1;
else
right=mid-1;
}
return left-1;
}
int main()
{
while(scanf("%d %d",&n,&c)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);//从小到大排序
printf("%d\n",bin_search(a[n-1]-a[0]));//a[n-1]-a[0]最大差值
}
return 0;
}