P2893 [USACO08FEB] Making the Grade G
P2893 [USACO08FEB] Making the Grade G
题目描述
农夫约翰想改造一条长度为 \(N\) 的路,原来的路的每一段海拔是 \(A_i\),修理后是 \(B_i\),花费 \(|A_i - B_i|\)。我们要求修好的路,即你构造的 \(B_i\),是单调不升或者单调不降的。求最小花费 \(\sum_{i=1}^{N} |A_i - B_i|\)。
输入格式
第一行包含一个整数 \(N\)。
接下来 \(N\) 行,每行包含一个整数 \(A_i\)。
输出格式
一行一个整数,表示最小花费。
输入输出样例 #1
输入 #1
7
1
3
2
4
5
3
9
输出 #1
3
说明/提示
数据范围为 \(1\le N\le 2000, 0\le A_i\le 10^9\)。
补充结论的证明
这道题做法有反悔贪心和dp,但是我觉得更重要的是这个结论:
在满足花费最小化的前提下,一定存在一种构造B的方案,使得B中的每个数都是A序列中的数
证明:数学归纳法
-
以单调不降为例:
-
当 \(n=1\) 时,结论显然成立。
-
假设 \(n=k-1\) 时结论成立,则当 \(n=k\) 时:
-
若 \(A_k \ge B_{k-1}\) 则可以不动 \(A_k\) ,单调性以及正确性显然。
-
若 $ A_k <B_{k-1}$ 则可以发现只能在这种为维护单调性而调整的方式中寻找最优解:
-
令 \(i \in [1,k-1]\) 让 \(i\) 之后的所有元素(包括 \(A_k\) )全部变为 \(x\) ,并且满足 \(x\ge B_i\)
-
若 \(i=k-1\) 则结论显然成立。
-
若 \(i<k-1\) 证明如下:
-
此时的总代价为 \(cost_i+\sum\limits_{j=i+1}^k|a_j-x|\)
-
对于固定的 \(i\) 而言,左半部分是固定的,右半部分是一个绝对值函数,且是一个凸函数,其取最小值时, \(x\) 为 \([i+1,k]\) 之间的中位数,也就是说,一定存在一个 \(a_p\) , 使得 \(x=a_p\) 那么当然就有 \(B_k=x=a_p \in A\)
-
又因为在这种情况下只有这样调整才能满足单调性,所以最优解的对应方案一定在这种调整方式中,即一定存在一个固定的 \(i\) 能够让这种情况下的代价最小,而对于任意一个 \(i\) 都满足上述性质,所以结论成立。
$\mathcal{Q.E.D}$
-
-
-
结论证明之后做法很多,有基于堆的反悔贪心,有dp,也就不细讲了。

浙公网安备 33010602011771号