公式

H - 休暇/Vacation 解説 by kyopro_friends


次のようなDPにより解くことができます。

\(DP[i][j][f] = i\) 日目までに \(j\) 日間宿題をし、\(j\) 日目に宿題を (\(f\) ? する : しない) ときの、\(i\) 日目までの楽しさの合計の最大値

\(i+1\) 日目に宿題をするか遊ぶかにより、次のように遷移します。

  • \(DP[i+1][j][{\rm True}] = DP[i][j-1][{\rm False}]\)
  • \(DP[i+1][j][{\rm False}] = \max(DP[i][j][{\rm True}]+A_{i+1},DP[i][j][{\rm False}]+A_{i+1})\)

求める答えは \(\max(DP[N][M][{\rm False}],DP[N][M][{\rm True}])\) です。

(問題文では「\(M\) 日以上」とありますが、\(M\) 日より多くしても楽しさが増えることはないため、\(M\) 日ちょうどであるとしてよいです)

投稿日時:
最終更新: