poj 3186 Treats for the Cows

来源:互联网 发布:ip 网络层 编辑:程序博客网 时间:2024/04/25 14:02

dp

正数第i个,倒数第j个;

dp[i][j]=max(dp[i-1][j]+val[i]*(i+j),dp[i][j-1]+val[n-j+1]*(j+i);

#include <iostream>#include <cstdio>using namespace std;int val[2005];int dp[2005][2005];int main(){//    freopen("in","r",stdin);    int n;    while(cin>>n)    {        for(int i=1;i<=n;i++)        {            scanf("%d",&val[i]);        }        int _max=0;        int i,j;        for(i=0;i<=n;i++)        {            for(j=0;j+i<=n;j++)            {                if(i==0&&j==0)                    dp[i][j]=0;                else if(i==0&&j!=0)                    dp[i][j]=max(dp[i][j],dp[i][j-1]+val[n-j+1]*(i+j));                else if(i!=0&&j==0)                    dp[i][j]=max(dp[i][j],dp[i-1][j]+val[i]*(i+j));                else                    dp[i][j]=max(dp[i-1][j]+val[i]*(i+j),dp[i][j-1]+val[n-j+1]*(i+j));            }        }        for(i=0;i<=n;i++)        {            if(_max<dp[i][n-i])            {                _max=dp[i][n-i];            }        }        printf("%d\n",_max);    }    return 0;}


0 0
原创粉丝点击