只过了附加点怎么回事,谢谢
查看原帖
只过了附加点怎么回事,谢谢
1656372
p66666楼主2025/4/29 19:43
using namespace std;
long long lo,n,k,cmt,ans;
long long a[100000];  
bool p(long long x){
    long long cmt=0;
    for(int i=2;i<=n;i++){
        if(a[i]-a[i-1]>x) cmt+=(ceil((a[i]-a[i-1])/x)-1);
    }
    if(a[1]>x)  cmt+=(ceil(a[1]/x)-1);
    if(lo-a[n]>x)   cmt+=(ceil((lo-a[n])/x)-1);
    return cmt<=k;
}

int main(){
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    cin>>lo>>n>>k;
    for(int i=1;i<=n;i++)
    cin>>a[i];
   long long l=1,r=1e9;
    while(l<=r){
        long long mid=(l+r)/2;
        ans=mid;
        if(p(mid)) r=mid-1;
        else l=mid+1;
    }
    cout<<ans;
    return 0;
}
2025/4/29 19:43
加载中...