Educational DP Contest / DP まとめコンテスト
とても楽しいコンテストだった。本番は 完だった。解けていない問題についてはゆっくり更新していく。
A (Frog 1)
今いる位置から飛べる位置への最小コストをまとめる。
B (Frog 2)
A とほぼ同じ。遷移先が増えるだけ。
C (Vacation)
日連続で同じ活動ができないので、前日に選んだ活動を保持しておいて遷移する。
日目まで見て直前の活動が であるときの最大値とすると前日を同じ場合を除いて
が最大値になる。メモ化再帰で解いた。
D (Knapsack 1)
よくあるナップザック
番目までみて重さが のときの最大の価値
E (Knapsack 2)
よくあるナップザック
番目までみて価値が のときの重さの最小値
F (LCS)
LCSの復元。まだよく理解できていない。
G (Longest Path)
各頂点から dfs したときの有向パスの最大値を解いた。メモ化再帰。
H (Grid 1)
数Ⅰとかででてくるよくある経路の個数の問題。 位置 の場合の数とすると #
のマスを除いて
となる。解は となる。
I (Coins)
表が 回、裏が 回出るときの確率とすると
として
答えは なる について が解になる。
J (Sushi)
解けていない
K (Stones)
ゲーム。WL-Algorithm の雰囲気で解ける。負ける状態に遷移させることができる山の個数の場合は勝ち。そうでない場合は負け。
山に 個あるときの勝敗とすると
DP初期値は として までが負けとなる。山から石を選ぶことができないので。 以降は 個ある山が負けになる場合が存在する場合は 個の山は勝ちとなる。それ以外は負け。
L (Deque)
ゲーム。順番が入れ替わることに と が入れ替わる。 回ごとに選べる区間が小さくなるので、いずれ区間がなくなり最終的な値が決まる。
DPの遷移は
- 太郎くんの順番の場合は
- 次郎くんの順番の場合は
となる。メモ化再帰で解いた。
M (Candies)
よく理解できていない。本番は蟻本写した()
N (Slimes)
区間DP。 区間 での最小コストと定義する。そのとき なる について
が成り立つ。区間上の 点を選ぶと、区間が つに分かれていき、いずれ区間がなくなり状態が決まる。メモ化再帰で解いた。
O (Matching)
男性 について女性の部分集合 とマッチングするときの場合の数
とする。DPの遷移は の bit が立っているいずれかの女性とマッチングさせるので配るDPの要領で
となる。ナイーブに実装すると となって間に合わないが、マッチングする候補は 番目の男性について考える場合は の のみ考えればよく、計算量が に落ちる。
P (Independent Set)
木DP。D - 塗り絵 とほぼ同じ。
Q (Flowers)
LIS をセグメントツリーで高速化するDP。
R (Walk)
回目に各頂点 に存在する場合の数を とすると、 回目のそれぞれの頂点にいる場合の数は に行列 を 回掛けた結果になる。よって の 上の行列累乗を求めておけば解くことができる。(ナイーブに行列 を 回掛けるのは TLE
になる)
S (Digit Sum)
よくある桁DP。 桁目まで考えたとき、 の余りが で今ピッタリかどうか と見ると解ける。メモ化再帰。
T (Permutation)
解けていない。
U (Grouping)
集合が つに分かれていくDP。まだ詳細に理解していない。
V (Subtree)
解けていない。
W (Intervals)
解けていない。
X (Tower)
解けていない。
Y (Grid 2)
個までの点を通らず 個目の点を通る場合の数
とDPを定義する。DPの遷移は点 よりも左上にある点を とすると
となる。解は である。
つの点を通らずマス への経路は、マス への経路 つの点を つでも通る場合の数 であることから包除原理より求めることができる。左上にある点集合を で求めるには、事前に つの点を の昇順でソートしておけばよい。
Z (Frog 3)
解けていない。