poj3666

来源:互联网 发布:安卓ehviewer网络错误 编辑:程序博客网 时间:2024/06/13 16:30
#include <iostream>#include<cstdio>#include<algorithm>#include<string.h>#include<math.h>using namespace std;int n,a[2005],dp[2005][2005],b[2005];int main(){    scanf("%d",&n);    for(int i=0;i<n;i++)    {    scanf("%d",&a[i]);    b[i]=a[i];    }    sort(b,b+n);    memset(dp[0],0,sizeof(dp[0]));    for(int j=1;j<=n;j++)    {        int m=1000000005;        for(int i=0;i<n;i++)        {            m=min(dp[j-1][i],m);            dp[j][i]=m+abs(a[j-1]-b[i]);        }    }    int m=1000000005;    for(int i=0;i<n;i++)    {    m=min(m,dp[n][i]);    }    printf("%d\n",m);    return 0;}

数据比较弱,只需要求非递减数列

dp+离散化

0 0