洛谷P1182 数列分段Section II
P1182 数列分段Section II
数列分段 Section II
题目描述
对于给定的一个长度为
关于最大值最小:
例如一数列
将其如下分段:
第一段和为
将其如下分段:
第一段和为
并且无论如何分段,最大值不会小于
所以可以得到要将数列
输入格式
第
第
输出格式
一个正整数,即每段和最大值最小为多少。
样例 #1
样例输入 #1
5 3
4 2 4 5 1
样例输出 #1
6
提示
对于
对于
对于
题解
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100100],n,m;
bool check(int x)
{
int sum = 0, cnt = 1;
for (int i=1; i<=n; ++i)
{
sum += a[i];
if (sum>x)
{
cnt++;
sum = a[i];
if (cnt>m) return false ;
}
}
return true ;
}
int main()
{
int l = 0, r = 0, ans;
scanf("%d%d",&n,&m);
for (int i=1; i<=n; ++i)
{
scanf("%d",&a[i]);
r += a[i];
l = max(l,a[i]);
}
while (l<=r)
{
int mid = (l+r)>>1;
if (check(mid))
{
ans = mid;
r = mid-1;
}
else l = mid+1;
}
printf("%d",ans);
return 0;
}
标签:洛谷,数列,int,Section,II,最大值,分段 From: https://www.cnblogs.com/letgogogogo/p/18544622