蒟蒻提问,为啥爆0?
查看原帖
蒟蒻提问,为啥爆0?
234344
NineQueen楼主2022/5/14 17:18

如题,全是wa

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int L,N,K;
vector<int> signs;
int checkSet(int distance){
    int setNum = 0;
    for(int i=0;i<signs.size();i++){
        if(signs[i]>distance){
            setNum += (signs[i]-1)/distance;
        }
    }
    return setNum;
}
int midCheck(int left,int right){
    if(left+1==right){
        if(checkSet(right)<=K) return right;
        return left;
    }
    int mid = (left+right)>>1;
    int setNum = checkSet(mid);
    if(setNum<=K){
        return midCheck(left,mid);
    }else{
        return midCheck(mid,right);
    }
}
int main(){
    cin >> L >> N >> K;
    signs.push_back(0);
    int distance = 0;
    for(int i=0;i<N;i++){
        cin >> distance;
        signs.push_back(distance-signs[i]);
    }
    if(distance!=L) signs.push_back(L-distance);
    cout << midCheck(0,L)<<endl;
    system("pause");
    return 0;
}
2022/5/14 17:18
加载中...