编程题
### 问题描述 小蓝是一个热爱收集玩具的小伙子,他拥有 $n$ 个不同的玩具。 这天,他把 $n$ 个玩具按照高度顺序**从矮到高**摆放在了窗台上,然后,他希望将这些玩具分成 $k$ 个段,使得所有分段的极差之和尽可能小。 具体来说,你需要将一个长度为 $n$ 的序列分为 $k$ 段,我们定义 $G_i$ 为第 $i$ 个分段的极差,你要最小化 $\sum _{i=1} ^k G_i$。 你能帮助小蓝找到最小值是多少吗? **极差**:是指每个分段中最高和最矮玩具高度之差,例如有一段为:$\lbrace 3,6,10,12\rbrace$,那么极差为 $12-3=9$。 **分段**:即每一段在原始序列中是一段**连续区间**,例如将 $\lbrace 1,2,3,4,5 \rbrace$ 分为两段,$\lbrace 1,2,3 \rbrace | \lbrace 4,5 \rbrace$ 是合法的,但是 $\lbrace 1,2,4 \rbrace | \lbrace 3,5 \rbrace$ 不是合法的。 ### 输入格式 第一行输入两个整数 $n, k$,代表玩具数量和需要分段的数量。 第二行输入 $n$ 个整数 $\lbrace h_1,h_2,...,h_n\rbrace$,代表每个玩具的高度。 ### 输出格式 输出一个整数,表示最小的极差和。 ### 样例输入 ``` 5 2 2 5 7 10 13 ``` ### 样例输出 ``` 8 ``` ### 说明 存在多种分段方式,其结果都是最小值: 1. $\lbrace 2\rbrace | \lbrace 5,7,10,13\rbrace$,极差和为 $0 + 8 = 8$。 2. $\lbrace 2,5,7\rbrace | \lbrace 10,13\rbrace$,极差和为 $5 + 3 = 8$。 3. $\lbrace 2,5,7,10\rbrace | \lbrace 13\rbrace$,极差和为 $8 + 0 = 8$。 不存在其他方案使得答案小于 $8$。 ### 评测数据范围 $1 \le k \le n \le 10^5$ 。 $ 1 \le h_1 \le h_2 \le h_3 \le ... \le h_n \le 10^9 $ 。
查看答案
赣ICP备20007335号-2