2578-探险
本文总阅读量次
数列分段模板题求的是最大值最小,所以验证的时候,每一个分段之和不能超过答案。
而此题是最小值最大,也就是每一个分段之和要大于或等于答案。
那么在验证的时候,如果分段之和大于或等于答案,意味着找到一段。
bool check(int x)
{
int sum = 0, cnt = 0;
for(int i = 1; i <= n; i++){
sum += a[i];
if(sum>=x){ //达到标准,注意,此时a[i]属于当前这段区间
sum = 0;
cnt++;
}
}
return cnt>=k;
}
因为找的是最小值,达到或超过都是符合要求,所以接下来要重新计算,
答案区间跟数列分段的最大值最小不同,可以从