<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; }