USACO 2008 Running(贝茜的晨练)

时间:2023-03-10 04:12:25
USACO 2008 Running(贝茜的晨练)

USACO 2008 Running(贝茜的晨练)

USACO 2008 Running(贝茜的晨练)

【题解】

动态规划,dp[i][j]表示第i分钟疲劳度为j的最长距离。

【代码】

 #include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cstring>
using namespace std;
#define scan(x) cin >> x
#define print(x) printf("%d\n", x)
#define maxn 10005
#define maxm 505 int D[maxn], dp[maxn][maxm]; int main()
{
int N, M;
scan(N);
scan(M);
for (int i = ; i <= N; i++) scan(D[i]);
for (int i = ; i <= N; i++) {
dp[i][] = dp[i - ][];
for (int j = ; j <= i && j <= M; j++) {
dp[i][] = max(dp[i][], dp[i - j][j]); // If spent the preceding j minutes resting
dp[i][j] = max(dp[i][j], dp[i - ][j - ] + D[i]); // Run when fatigue degree is j.
}
}
print(dp[N][]);
//system("pause");
return ;
}