为什么加上min就错了
查看原帖
为什么加上min就错了
542313
宇宙的怒火楼主2021/8/26 19:08
#include<bits/stdc++.h>
using namespace std;
int l,n,k,o,s=100000;vector<int>a;//动态数组,跟普通数组基本一样
int main(){
    cin>>l>>n>>k;
    for(int i=0;i<n;i++){cin>>o;a.push_back(o);}
    int lx=1,xl=l,mid;//象形变量。。。lx是左边界,xl是右边界
    while(lx<=xl){
        mid=(lx+xl)/2;int h=0;
        for(int i=1;i<(int)a.size();i++)
        if(a[i]-a[i-1]>mid)
    h+=((a[i]-a[i-1])%mid==0?(a[i]-a[i-1])/mid-1:(a[i]-a[i-1])/mid);
        if(h<=k){s=mid;//如果这里是s=min(s,mid),就AC不了
        xl=mid-1;}
        if(h>k)lx=mid+1;
    }cout<<s;
    return 0;
}
2021/8/26 19:08
加载中...