编程题
### 问题描述 有一支有 $n$ 名士兵的军队,士兵从 $1$ 到 $n$ 编号,编号为 $i$ 的士兵有武力值 $a_i$ ,初始时士兵按照武力值从低到高进行排序。 但是军队内部不是特别团结,特别是军队统帅将他们分成了 $k$ 个连续的小队之后。每隔一段时间每个小队就会发生一次内部打斗事件,打斗发生后,每个小队都会损失部分战斗力,损失的战斗力为士兵武力值最高者与武力值最低者的武力值之差。 假如你是统帅,现在面对这样一支武力值从低到高排列的军队,需要把他们分成 $k$ 个小队。你应如何分配,才能使每次打斗事件发生后, $k$ 个小队的战斗力损失最小。 要求 $k$ 个小队中,每个小队都不能为空,且每名士兵都必须在一个小队中。 ### 输入格式 第一行包含两个整数 $n,k$​ ,分别表示士兵总人数和需要分成的小队数。 第二行包含 $n$ 个整数 $a_1,a_2,…,a_n$ ,表示军队中士兵的武力值。保证这些数据按照非降序排列,即若有 $i>1$ ,必有 $a_i>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