HDU 2182 Frog(DP)

题目链接

裸二维DP。数据量比较小,0ms水过。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int dp[1001][101],p[1001];
 4 int main()
 5 {
 6     int i,j,n,t,a,b,k,u,max;
 7     scanf("%d",&t);
 8     while(t--)
 9     {
10         memset(dp,128,sizeof(dp));
11         scanf("%d%d%d%d",&n,&a,&b,&k);
12         for(i = 0;i <= n-1;i ++)
13         {
14             scanf("%d",&p[i]);
15         }
16         dp[0][0] = p[0];
17         for(i = 1;i <= k;i ++)
18         {
19             for(j = 0;j <= n-1;j ++)
20             {
21                 for(u = a;u <= b;u ++)
22                 {
23                     if(j - u < 0)
24                     break;
25                     if(dp[i][j] < dp[i-1][j-u] )
26                     dp[i][j] = dp[i-1][j-u];
27                 }
28                 dp[i][j] += p[j];
29             }
30         }
31         max = p[0];
32         for(i = 1;i <= k;i ++)
33         {
34             for(j = 0;j <= n-1;j ++)
35             {
36                 if(max < dp[i][j])
37                 max = dp[i][j];
38             }
39         }
40         printf("%d\n",max);
41     }
42     return 0;
43 }
posted @ 2012-09-03 18:33  Naix_x  阅读(250)  评论(0编辑  收藏  举报