[USACO06FEB]奶牛零食Treats for the Cows 思路

写不来dp的日常

....就这样吧

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 int dp[2010][2010],v[2010];//取了i个有j个在左 
 7 int n;
 8 int main()
 9 {
10     int i,j,r;
11     scanf("%d",&n);
12     for(i=1;i<=n;i++)scanf("%d",&v[i]);
13     for(i=1;i<=n;i++)//天数&取了的个数 
14     {
15         for(j=0;j<=i;j++)//左边取了j个 
16         {
17             r=i-j;//右边取了i-j个 
18             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)个)    
19         } 
20     }
21     int ans=0;
22     for(j=1;j<=n;j++)ans=max(ans,dp[n][j]);
23     printf("%d",ans);
24 return 0;
25 }

猜你喜欢

转载自www.cnblogs.com/pile8852/p/9278166.html