「POJ 3666」Making the Grade 路面修整
1 算法标签
dp动态规划,滚动数组优化
2 题目难度
提高/提高+
3 题面
「POJ 3666」Making the Grade 路面修整
4 分析题面
4.1 简要描述
给出数列 A A A, 求非严格单调不上升或单调不下降, 且 S = ∑ i = 1 N ∣ A i − B i ∣ S=\sum^N_{i=1}|A_i-B_i| S=∑i=1N∣Ai−Bi∣ 最小的序列 B B B,输出 S S S
4.2 模型转换
输入N, 然后输入N个数,求最小的改动这些数使之成非严格递增或非严格递减即可
5 问题分析
以B为非严格单调递增为例
考虑已经选了 n n n个数
-
若 n = 1 n=1 n=1, A 1 = B 1 A_1=B_1 A1=B1时 S S S最小为 ∣ A 1 − B 1 ∣ |A_1-B_1| ∣A1−B1∣
-
若 n > 1 n>1 n>1,前面已经选择了 n − 1 n-1 n−1个数,取得了最小值,考虑怎么取第 n n n个数
-
若 A i ≥ B i − 1 A_i≥B_{i-1} Ai≥Bi−1, B i = A i B_i=A_i Bi=Ai显然最优
-
若 A i < B i − 1 A_i<B_{i-1} Ai
-