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 }

浙公网安备 33010602011771号