水——洛谷P1182 数列分段Section II

来源:互联网 发布:vmware12安装ubuntu 编辑:程序博客网 时间:2024/05/19 05:04

https://www.luogu.org/problem/show?pid=1182
的确是水题啊;
但是我说过我没1a就要写博客;
尴尬;
话说还是要谨慎啊

#include<cmath>#include<iostream>#include<cstring>#include<cstdio>using namespace std;int a[100005],ans,n,m;bool check(int x){    int last=0,sum=0;    for(int i=1;i<=n;i++){        if(a[i]-a[i-1]>x)return 0;        if(a[i]-a[last]>x)last=i-1,sum++;        if(sum>m-1)return 0;    }return 1;}int main(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++)scanf("%d",&a[i]),a[i]+=a[i-1];    int l=0,r=a[n];ans=1e9;    while(r>=l){        int mid=l+r>>1;        if(check(mid)){            ans=min(ans,mid);            r=mid-1;        }else l=mid+1;    }    printf("%d",ans);}
1 0