0
0
已采纳
这题我不是用贪心,用的是二分,
二分答案,然后判断能否实现:
判断函数如下:
int Rearch(long long mid){
long long last=1,cnt=1;
for(int i=2;i<=n;i++){
if(a[i]-a[last]>=mid){
last=i;
cnt++;
if(cnt>=c) return true;
}
}
return false;
}
0
这题用二分
主函数核心
输入n,m,a数组
排序,从小到大
for(int i=2;i<=n;i++){
l=min(l,a[i]-a[i-1]);
}
int r=a[n]-a[1];
当(l<r){
int mid=(l+r+1)/2;
if(!check(mid)){
r=mid-1;
}
else{
l=mid;
}
}
输出l;
这题的贪心思路就是二分,暴力枚举可能会超时
0
0