传送门
描述
给定长度为N的序列A,构造一个长度为N的序列B,满足:
1、B非严格单调,即B1≤B2≤…≤BN或B1≥B2≥…≥BN。
2、最小化 S=∑Ni=1|Ai−Bi|。
只需要求出这个最小值S。
输入格式
第一行包含一个整数N。
接下来N行,每行包含一个整数Ai。
输出格式
输出一个整数,表示最小S值。
数据范围
1≤N≤2000,
0≤Ai≤109
输入样例:
7
1
3
2
4
5
3
9
输出样例:
3
首先,我们先给添加一个排完序的数组,然后对应着位置上升或者下降,这样能够保证差的和最小,然后有升序和降序的区别,所以我们正序和
逆序dp一次即可
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn(1e4);
const int inf=0x3f3f3f3f;
int a[maxn],b[maxn],f[maxn][ma