洛谷:P1182 数列分段 Section II(二分,)
程序员文章站
2022-07-16 10:59:14
...
题目:
再做最后一道二分吧,希望别处什么岔子了。
代码:ok,就两个模板试试呗。
#include<bits/stdc++.h>
using namespace std;
int m,n;
int A[100005];
int main()
{
cin>>m>>n;
int minn=-1;
for(int i=0;i<m;i++)
{
cin>>A[i];
minn=max(minn,A[i]);
}
int a=minn;
int b=1000000005;
while(a<=b)
{
int c=(a+b)/2;
int all=0;
int sum=0;
for(int i=0;i<m;i++)
{
if(sum+A[i]>c)
{
sum=A[i];
all++;
}
else sum+=A[i];
}
all++;
//cout<<c<<"-"<<all<<endl;
if(all<=n)
{
b=c-1;
}
else a=c+1;
}
cout<<a;
}