【題目描述】
fj打算好好修一下農場中某條凹凸不平的土路。按奶牛們的要求,修好後的路面高度應當單調上公升或單調下降,也就是說,高度上公升與高度下降的路段不能同時出現在修好的路中。 整條路被分成了n段,n個整數a_1, ... , a_n (1 <= n <= 2,000)依次描述了每一段路的高度(0 <= a_i <= 1,000,000,000)。fj希望找到乙個恰好含n個元素的不上公升或不下降序列b_1, ... , b_n,作為修過的路中每個路段的高度。由於將每一段路墊高或挖低乙個單位的花費相同,修路的總支出可以表示為: |a_1 - b_1| + |a_2 - b_2| + ... + |a_n - b_n| 請你計算一下,fj在這項工程上的最小支出是多少。fj向你保證,這個支出不會超過2^31-1。【輸入格式】
第1行: 輸入1個整數:n * 第2..n+1行: 第i+1行為1個整數:a_i
【輸出格式】
第1行: 輸出1個正整數,表示fj把路修成高度不上公升或高度不下降的最小花費
【樣例輸入】71
3245
39【樣例輸出】
【樣例解釋】
fj將第乙個高度為3的路段的高度減少為2,將第二個高度為3的路段的高度增加到5,總花費為|2-3|+|5-3| = 3,並且各路段的高度為乙個不下降序列 1,2,2,4,5,5,9。
離散數列a[i]
f[i][j]表示到第i個節點時,以高度j為標準,大於(小於)j時,支出的最小值
1 #include2using
namespace
std;34
const
int inf=0x7fffffff;5
6int
n,ans;
7int a[2001],b[2001];8
int f[2001][2001];9
10int
read()
1114
while(ch>='
0'&&ch<='9')
15return x*f;16}
1718
bool cmp(int a,int b)
1920
intmain()
2127 sort(b+1,b+n+1
);28
for(int i=1;i<=n;i++)
29 f[i][0]=inf;
30for(int i=1;i<=n;i++)
31for(int j=1;j<=n;j++)
3236 ans=f[n][n];
37 sort(b+1,b+n+1
,cmp);
38for(int i=1;i<=n;i++)
39for(int j=1;j<=n;j++)
4044 ans=min(ans,f[n][n]);
45 printf("%d"
,ans);
46return0;
47 }
線性DP 路面修整
fj打算好好修一下農場中某條凹凸不平的土路。按奶牛們的要求,修好後的 路面高度應當單調上公升或單調下降,也就是說,高度上公升與高度下降的路段不能 同時出現在修好的路中。整條路被分成了n段,n個整數a1,an 1 n 2,000 依次描述 了每一段路的高度 0 ai 1,000,000,000 fj希...
21th 動態規劃 路面修整
fj打算好好修一下農場中某條凹凸不平的土路。按奶牛們的要求,修好後的路面高度應當上公升或下降,也就是說,高度上公升與高度下降的路不能同時出現在修好的路中。整條路被分成了n段,n個整數a 1,a n 依次描述了每一段路的高度。fj希望找到乙個恰好含n個元素的不上公升或不下降序列b 1,b n,作為修過...
noip模擬賽 密碼
表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...