1613: [Usaco2007 Jan]Running贝茜的晨练计划

dp题,dp[i][j]表示i分钟j疲劳度能到达的最远距离。

i分钟时,0疲劳度可能是i-1分钟的疲劳度为0,或者i-j分钟的时候疲劳度为j然后休息。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4  
 5 using namespace std;
 6  
 7 int N, M, d[10010];
 8 int dp[10010][510];
 9  
10 int main() {
11     memset(dp, 0, sizeof(dp));
12     scanf("%d%d", &N, &M);
13     for (int i = 1; i <= N; ++i) scanf("%d", &d[i]);
14  
15     for (int i = 1; i <= N; ++i) {
16         dp[i][0] = dp[i-1][0];
17         for (int j = 1; j <= M; ++j) {
18             dp[i][j] = max(dp[i][j], dp[i-1][j-1]+d[i]);
19             if (i >= j) dp[i][0] = max(dp[i][0], dp[i-j][j]);
20         }
21     }
22  
23     printf("%d\n", dp[N][0]);
24     return 0;
25 }
View Code

 

posted @ 2016-04-26 22:42  拒绝者\n  阅读(253)  评论(0)    收藏  举报