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 }