POJ 3661 Running
状態が(経過時間, exaustion)のdp
int main() { int n, m; int d[ten(4)]; scanf("%d%d", &n, &m); rep(i, n) scanf("%d", d + i); static int dp[ten(4) + 1000][512]; rep(i, n) { erep(j, m) { // run chmax(dp[i + 1][j + 1], dp[i][j] + d[i]); // rest if (j > 0) chmax(dp[i + j][0], dp[i][j]); } // rest (can choose rest when exaustion == 0 chmax(dp[i + 1][0], dp[i][0]); } printf("%d\n", dp[n][0]); }