きろく

特筆すべき記録のまとめ

Educational DP Contest:E - Knapsack 2

問題

atcoder.jp

解法

dp(i, j) := i 番目のものまでで価値 j のときの重さの最小値

と定義する.このとき,

dp(i, j) = inf (j < 0 のとき)

dp(i, j) = 0 (j == 0 のとき)

min( dp(i - 1, j) , dp(i - 1, j - v_(i - 1)) + w_(i - 1) ) (それ以外)

と漸化式が立つ.状態数 O(N * V_sum),遷移 O(1) となり O(N * V_sum). 

解答

atcoder.jp

これもメモ化再帰で書いたので少し重い結果になった.

f:id:babcs2035:20190107165203p:plain

 

Educational DP Contest:D - Knapsack 1

問題

atcoder.jp

解法

dp(i, j) := i 番目のものまでで重さ j のときの価値の最大値

と定義する.このとき,

dp(i, j) = max( dp(i - 1, j) , dp(i - 1, j - w_(i - 1)) + v_(i - 1) )

と漸化式が立つ.状態数 O(NW),遷移 O(1) となり O(NW). 

解答

atcoder.jp

メモ化再帰で書いたので少し実行時間とメモリ使用量ともに重い結果になった.

f:id:babcs2035:20190107164720p:plain

 

Educational DP Contest:C - Vacation

問題

atcoder.jp

解法

dp(i, j) := i - 1 日目に j を選んだ時の i 日目までの幸福度の和の最大

と定義する.このとき,

dp(i, j) = max( dp(i - 1, 0) + a_(i - 1) (j != 0 のとき), dp(i - 1, 1) + b_(i - 1) (j != 1 のとき), dp(i - 1, 2) + c_(i - 1) (j != 2 のとき))

と漸化式が立つ.状態数 O(N),遷移 O(1) となり O(N).

解答

atcoder.jp

f:id:babcs2035:20190107164307p:plain