求解,只能过subtask#1,思路是按照题解大佬写的,不知道哪里有问题
查看原帖
求解,只能过subtask#1,思路是按照题解大佬写的,不知道哪里有问题
1281742
LeLe422楼主2024/3/23 17:21
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+10;
int l,n,k;
int nums[N];

bool check(int G)
{
    int cnt = 0,tmp = 0;
    for(int i=1; i<n; i++){
        if(cnt>k) return false;
        if(nums[i+1] - tmp > G){
            cnt++,i--;
            tmp+=G;
        }
        else tmp = nums[i];
    }
    return cnt<=k;
}

int main()
{
    cin>>l>>n>>k;
    for(int i=1; i<=n; i++) scanf("%d",&nums[i]);
    int l=0,r=nums[n];
    while(l+1<r){
        int mid = l+r>>1;
        if(check(mid)) r = mid;
        else l = mid;
    }
    cout<<r;
    return 0;
}
2024/3/23 17:21
加载中...