[poj 3666] Making the Grade {动态规划}

题目

http://poj.org/problem?id=3666


解题思路

跟CF13C Sequence {动态规划}一样水题一道。


代码

#include 
#include
#define rep(i,x,y) for(register long long i=x;i<=y;i++)
using namespace std; 
long long n,a[5001],b[5001],f[5001]; 
int main(){
	scanf("%lld",&n); 
	rep(i,1,n) scanf("%lld",&a[i]),b[i]=a[i]; 
	sort(b+1,b+n+1); 
	rep(i,1,n) rep(j,1,n)
 	if (j==1) f[j]+=abs(a[i]-b[j]); else f[j]=min(f[j-1],f[j]+abs(a[i]-b[j])); 
 	return 0&printf("%lld",f[n]); 
}

你可能感兴趣的:(动态规划(/线性DP))