#P2954. [USACO09OPEN] Grazing2 S
[USACO09OPEN] Grazing2 S
题目描述
农夫约翰有 头奶牛,它们被编号为 到 。他新建的谷仓有一排 个牛栏 ),这些牛栏也被编号为 到。每个牛栏与其相邻的牛栏相距为 。
奶牛们已经找到了各自的牛栏准备休息,第 头奶牛在第 个牛栏里。由于奶牛们不合群,如果它们所处的牛栏彼此非常接近,它们就会变得脾气暴躁,所以农夫约翰希望将奶牛尽可能地分散开来。
约翰想要确保相邻奶牛之间的 个距离尽可能大,并且希望这些距离的差值尽可能小(即接近等距)。
具体来说,约翰希望所有相邻奶牛之间的距离与 的差值不超过 。而且,他希望尽可能多的距离能够精确地等于 。因此,如果有 头奶牛和 个牛栏(此时 ),可以将奶牛放置在位置 或者 ,但不能放置在 或者 。
请帮助约翰尽可能有效地分散奶牛,并计算保证方案最优的情况下,所有奶牛需要移动的最小总距离。
输入格式
- 第 行:两个用空格分隔的整数: 和 。
- 第 到 行:第 行包含一个整数:
输出格式
- 第 行:一个整数,奶牛们需要移动的最小总距离。保证答案小于 (因此可以使用 int 类型存储)。
5 10
2
8
1
3
9
4
提示
样例解释
初始状态: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| |A|B|C|.|.|.|.|D|E|.|
奶牛从牛棚 2 移动到 3,从 3 移动到 5,从 9 移动到 10。总移动距离是 。奶牛们的最终位置在牛棚 。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 移动前 | A | B | C | . | . | . | D | E | . | |
| 移动后 | . | B | C | . | E | |||||
| 移动距离 | 0 | 1 | 2 | 0 | 1 | |||||