<USACO06FEB>奶牛零食Treats for the Cowsの思路

写不来dp的日常

....就这样吧

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[2010][2010],v[2010];//取了i个有j个在左 
int n;
int main()
{
    int i,j,r;
    scanf("%d",&n);
    for(i=1;i<=n;i++)scanf("%d",&v[i]);
    for(i=1;i<=n;i++)//天数&取了的个数 
    {
        for(j=0;j<=i;j++)//左边取了j个 
        {
            r=i-j;//右边取了i-j个 
            dp[i][j]=max(dp[i-1][j-1]+v[j]*i,dp[i-1][j]+v[n-r+1]*i);//(左边取了j-1个了,那么现在就要取左边第j个,共取i-1个,左边取了j个 ,则右边已取i-j-1个,就要取右边第n-(i-j-1)个)    
        } 
    }
    int ans=0;
    for(j=1;j<=n;j++)ans=max(ans,dp[n][j]);
    printf("%d",ans);
return 0;
}
点击查看丑陋の代码&注释

 

 

原文地址:https://www.cnblogs.com/pile8852/p/9278166.html