修公路
时间限制:1秒 内存限制:256M
【问题描述】
政府规划在边远丘陵地带修建一条笔直的公路,公路经过 \(N\) 个丘陵,每个丘陵的高度用一个非负整数表示。
公路设计规范要求最高处和最低处的差不可以超过 \(D\),因此有可能要降低或抬高某些丘陵,对于一个高度为 \(a\) 丘陵,若干把它的高度变成 \(b\),则需要的花费是\((a-b)^2\)。
现在给出 \(N\) 个丘陵的高度,请你求出修建公路的最小花费。注意,要求改造后的丘陵高度也必须是整数。
【输入格式】
第一行包含两个整数 \(N\) 和 \(D\),表示丘陵数目和高度差限制。
接下来的 \(N\) 行,每行一个整数,表示丘陵的高度,其中第 \(i+1\) 行的整数 \(h_i\) 表示第 \(i\) 个丘陵的高度。
【输出格式】
只有一行,包含一个整数,表示最小费用。
【输入输出样例1】
Input
5 17
20
4
1
24
21
Output
18
【输入输出样例1说明】
共有 5 个丘陵,它们的高度分别是 20,4,1,24,21,设计要求最高的丘陵高度与最矮的高度差不能超过 17。
我们保持高度为 20,4,21 三个丘陵不变;然后将高度为 1 的丘陵改为 4 ,需要的花费为\((1-4)^2=9\);将高度 24 的丘陵改为 21,费用为 \((24-21)^2=9\),共花费 9+9=18 的费用。可以证明这是最少的费用。
【输入输出样例2】
Input
6 20
3
9
20
7
8
100
Output
4315
【输入输出样例2说明】
一种最优方案是把高度为 3,9,20,7,8 的丘陵改成 21,把高度为 100 的丘陵改成 41,这样的花费是:
\((21-3)^2 +(21-9)^2 + (21-20)^2 + (21-7)^2 + (21-8)^2 +(100-41)^2 = 4315\)。
【数据说明】
对于 \(50\%\) 的数据,\(1 ≤ N ≤100\),\(0 ≤ D,h_i ≤ 1000\)。
对于 \(80\%\) 的数据,\(1 ≤ N ≤10000\),\(0 ≤ D,h_i ≤ 1000\)。
对于 \(100\%\) 的数据,\(1 ≤ N ≤100000\),\(0 ≤ D,h_i ≤ 1000000\)。
【来源】
Mr.he