编程题
### 问题描述 某班级有 $n$ 名学生,学生从 $1$ 到 $n$ 编号,编号为 $i$ 的学生有聪明值 $a_i$ ,初始时学生按照聪明值从低到高进行排序。 但是班级内部不是特别团结,特别是老师将他们分成了 $k$ 个连续的小组之后。每隔一段时间每个小组就会发生一次吵架事件,吵架发生后,每个小组都会损失部分睿智度,损失的睿智度为学生聪明值最高者与最低者的聪明值之差。 假如你是老师,现在面对这样一个聪明值从低到高排列的班级,需要把他们分成 $k$ 个小组。你应如何分配,才能使每次吵架事件发生后, $k$ 个小组的睿智度损失最小。 要求 $k$ 个小组中,每个小组都不能为空,且每名学生都必须在一个小组中。 ### 输入格式 第一行包含两个整数 $n,k$​ ,分别表示学生总人数和需要分成的小组数。 第二行包含 $n$ 个整数 $a_1,a_2,…,a_n$ ,表示班级中学生的聪明值。保证这些数据按照非降序排列,即若有 $i>1$ ,必有 $a_i\geq a_{i-1}$ 。 ### 输出格式 输出一个整数,表示使得 $k$ 个小组睿智度损失最小时的损失之和。 ### 样例输入 ``` 6 3 4 8 15 16 23 42 ``` ### 样例输出 ``` 12 ``` ### 评测数据规模 对于所有的评测数据, $1\leq{k}\leq{n}\leq{10^5 },1\leq{a_i}\leq{10^9 }$ 。
查看答案
赣ICP备20007335号-2