菜鸟驿站
测试数据来自 system/1111
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【问题描述】
一条街道上分布着 \(n\) 个社区,依次标号为 \(1..n\)。已知社区 \(i\) 和 \(i+1\) 的距离为 \(d_i(1≤i<m)\)。为了方便各社区收取快递,街道打算从 \(n\) 个社区中选择 \(m\) 个社区建立菜鸟驿站。那么要选择那些社区建立菜鸟驿站,才使得所有社区到最近驿站的距离总和最小,请编程计算这个最小值。
【输入格式】
第 1 行为 \(n\) 和 \(m\),意义如题目描述。
第 2 行为 \(n-1\) 个整数,分别是 \(d_1,d_2,…,d_{n-1}\),其中 \(d_i\) 表示社区 \(i\) 与社区 \(i+1\) 之间的距离。
同一行相邻整数之间以一个空格间隔。
【输出格式】
各社区到最近菜鸟驿站距离之和的最小值。
【输入输出样例】
Input
8 2
5 1 3 4 2 1 3
Output
17
【样例解释】
输入中的 8 个社区的位置如下图:
一种最优方案是把两个菜鸟驿站分别3号和6号社区,各社区到距离自己最近的驿站的距离分别为:
1 号社区到 3 号社区的距离为 5 + 1 = 6
2 号社区到 3 号社区的距离为 1
3 号社区自己就有驿站,距离为 0
4 号社区到 3 号社区的距离为 3
5 号社区到 6 号社区的距离为 2
6 号社区自己就有驿站,距离为 0
7 号社区到 6 号社区的距离为 1
8 号社区到 6 号社区的距离为 3 + 1 = 4
所以距离和为:6 + 1 + 3 + 2 + 1 + 4 = 17。
【数据限制】
\(0<m≤n<500\),\(0<d_i≤100\)