TJ
2025-10-26 17:57:03
发布于:北京
11阅读
0回复
0点赞
WTF之前一直没写出来这个题目
今天写出来了
一雪前耻
必须发一个题解
#include <bits/stdc++.h>
using namespace std;
int len,m,n,d[50010],mn;
bool check(int mid){
int lst=0,sum=0;
for(int i=1;i<=n;i++){
if(d[i]-lst>=mid){
lst=d[i];
}
else{
sum++;
}
}
if(len-lst<mid) sum++;
return sum<=m;
}
int main(){
cin>>len>>n>>m;
for(int i=1;i<=n;i++){
cin>>d[i];
mn=min(mn,d[i]-d[i-1]);
}
int l=mn,r=len,ans=-1;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}
else{
r=mid-1;
}
}
cout<<ans;
return 0;
}
全部评论 1
d
1周前 来自 北京
1






有帮助,赞一个