版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
title: "题解 - [Luogu P1182] 数列分段 Section II" categories:
对于给定的一个长度为 $N$ 的正整数数列 $A_{1\sim N}$, 现要将其分成 $M$ ($M\leqslant N$)段, 并要求每段连续, 且每段和的最大值最小.
关于最大值最小:
例如一数列 $4\ 2\ 4\ 5\ 1$ 要分成 $3$ 段.
将其如下分段:
$$ [4\ 2][4\ 5][1] $$
第一段和为 $6$, 第 $2$ 段和为 $9$, 第 $3$ 段和为 $1$, 和最大值为 $9$.
将其如下分段:
$$ [4][2\ 4][5\ 1] $$
第一段和为 $4$, 第 $2$ 段和为 $6$, 第 $3$ 段和为 $6$, 和最大值为 $6$.
并且无论如何分段, 最大值不会小于 $6$.
所以可以得到要将数列 $4\ 2\ 4\ 5\ 1$ 要分成 $3$ 段, 每段和的最大值最小为 $6$.
第 $1$ 行包含两个正整数 $N,M$.
第 $2$ 行包含 $N$ 个空格隔开的非负整数 $A_i$, 含义如题目所述.
一个正整数, 即每段和最大值最小为多少.
5 3
4 2 4 5 1
6
对于 $20\%$ 的数据, $N\leqslant 10$.
对于 $40\%$ 的数据, $N\leqslant 1000$.
对于 $100\%$ 的数据, $1\leqslant N\leqslant 10^5$, $M\leqslant N$, $A_i$ 之和不超过 $10^9$.
二分答案
查询区间:
$$ \bigg[\max_{1\leqslant i\leqslant n}{Ai},\sum{i=1}^n A_i\bigg] $$
另外, 注意左端点, 如果令其为 0 则会 WA 一个点
$O(n\log(r-l))$, 其中 $l,\ r$ 分别指查询区间左右端点