D-切分数列(split)

题目背景

小 A 正在研究如何把一列数字合理地分组。

他希望把一个长度为 nn 的数列切成若干段,每一段都必须是 连续的一段 ,并且所有段都不能为空。为了让每一段的 压力 尽量均衡,他想让 每一段的元素和的最大值尽可能小

你的任务是帮助他求出这个最优值。

题目描述

给定一个长度为 nn 的正整数序列 a1,a2,,ana_1,a_2,\dots,a_n,请你将它划分成 恰好 kk 个非空连续子段

设这 kk 个子段的元素和分别为:

s1,s2,,sks_1,s_2,\dots,s_k

你需要最小化:

max(s1,s2,,sk)\max(s_1,s_2,\dots,s_k)

输出这个最小值。

输入格式

第一行输入两个整数 n,kn,k,分别表示数列长度和需要划分的连续子段个数。

第二行输入 nn 个正整数 a1,a2,,ana_1,a_2,\dots,a_n

输出格式

输出一个整数,表示把数列划分成恰好 kk 个非空连续子段后,各段元素和最大值的最小可能值。

输入输出样例

输入 #1

5 3
7 2 5 10 8

输出 #1

14

样例解释

一种最优划分方式是:

[7,2,5] [10] [8][7,2,5]\ [10]\ [8]

三段的段和分别为:

14, 10, 814,\ 10,\ 8

因此这一种划分下,最大段和为:

max(14,10,8)=14\max(14,10,8)=14

可以证明,不存在一种划分方案,使得最大段和小于 1414

数据范围

对于所有测试数据,保证:$1 \le k \le n \le 2 \times 10^5,\quad 1 \le a_i \le 10^9$

本题共设 2020 个测试点,各测试点满足的限制如下:

测试点编号 分值 nn kk 特殊性质
1\text{1} 55 10\le 10 =1=1 AA
2\text{2} =n=n BB
3\text{3} 20\le 20 n\le n 无特殊性质
4\text{4} CC
5\text{5} 100\le 100 =1=1 AA
6\text{6} =n=n BB
7\text{7} 1000\le 1000 n\le n DD
8\text{8} 无特殊性质
9\text{9} 2000\le 2000 10\le 10
10\text{10} 5000\le 5000 n\le n CC
11\text{11} 104\le 10^4 无特殊性质
12\text{12} 2×104\le 2 \times 10^4 20\le 20
13\text{13} 5×104\le 5 \times 10^4 n\le n EE
14\text{14} 8×104\le 8 \times 10^4 无特殊性质
15\text{15} 105\le 10^5 100\le 100
16\text{16} 1.2×105\le 1.2 \times 10^5 n\le n DD
17\text{17} 1.5×105\le 1.5 \times 10^5 无特殊性质
18\text{18} 1.8×105\le 1.8 \times 10^5 EE
19\text{19} 2×105\le 2 \times 10^5 =1=1=n=n AABB
20\text{20} n\le n 无特殊性质

特殊性质 AA:保证 k=1k=1

特殊性质 BB:保证 k=nk=n

特殊性质 CC:保证数列单调不降,即对任意 1i<n1 \le i < n,都有 aiai+1a_i \le a_{i+1}

特殊性质 DD:保证所有 aia_i 相等。

特殊性质 EE:保证 ai1000a_i \le 1000

相关

在下列比赛中:

「果壳杯」 ROUND 44 (Div. 4)