#P2954. [USACO09OPEN] Grazing2 S

    ID: 2000 Type: RemoteJudge 1000ms 125MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>动态规划,dp递推2009USACO单调队列

[USACO09OPEN] Grazing2 S

题目描述

农夫约翰有 NN 头奶牛2N1,500(2≤N≤1,500),它们被编号为 11NN。他新建的谷仓有一排 SS 个牛栏NS106(N≤S≤10 ^6 ),这些牛栏也被编号为 11S S。每个牛栏与其相邻的牛栏相距为 11

奶牛们已经找到了各自的牛栏准备休息,第 ii 头奶牛在第 PiP _i 个牛栏里。由于奶牛们不合群,如果它们所处的牛栏彼此非常接近,它们就会变得脾气暴躁,所以农夫约翰希望将奶牛尽可能地分散开来。

约翰想要确保相邻奶牛之间的 N1N−1 个距离尽可能大,并且希望这些距离的差值尽可能小(即接近等距)。

具体来说,约翰希望所有相邻奶牛之间的距离与 d=S1N1d=\left\lfloor \dfrac{S-1}{N-1} \right\rfloor的差值不超过 11。而且,他希望尽可能多的距离能够精确地等于 dd。因此,如果有 44 头奶牛和 88 个牛栏(此时 d=2d=2),可以将奶牛放置在位置 1,3,5,81,3,5,8 或者 1,3,6,81,3,6,8,但不能放置在 1,2,4,71,2,4,7 或者 1,2,4,81,2,4,8

请帮助约翰尽可能有效地分散奶牛,并计算保证方案最优的情况下,所有奶牛需要移动的最小总距离。

输入格式

  • 11 行:两个用空格分隔的整数:NNSS
  • 22N+1N+1 行:第 i+1i+1 行包含一个整数:PiP_i

输出格式

  • 11 行:一个整数,奶牛们需要移动的最小总距离。保证答案小于 10910^9 (因此可以使用 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+1=41+2+1=4。奶牛们的最终位置在牛棚 1,3,5,8,101,3,5,8,10

1 2 3 4 5 6 7 8 9 10
移动前 A B C . . . D E .
移动后 . B C . E
移动距离 0 1 2 0 1