ARC081 E: Don't Be a Subsequence
解き方
- 部分列でない最小の文字列の、先頭の文字を決める→2文字目以降の文字列について考える、を繰り返すDP
- DPする時には、後ろから決めていかないといけない
- どの文字を先頭にするか決めるために、どの文字がどこに現れるかについて前計算が必要
ハマったところ
- 単純にこのDPが思いつかなかった
- 辞書順最小に対しては、後ろからDPして、最後に経路復元するのが一つのテンプレートらしい。
ARC081 D: Coloring Dominos
解き方
- 左から順々に見ていく。直前のタイルの貼り方と、次のタイルの貼り方は2*2の4パターンなので、それぞれ場合分けしながら計算する
ハマったところ
- 上下に見ようとしたり、DFSしようとしたり、迷走していた
- 高さ2と小さいのだから、高さ方向を固定する方が良いということに気づくべきだった。
AOJ0525: おせんべい
蟻本初級の練習問題にあったので解いた。
解き方
- どの行をひっくり返すかは、全部で
2^R
通りなので、これについてはすべて試すことができる。 - ひっくり返す行を決めて、ひっくり返した後は、各列で裏と表のうち、多い方の数の和が、最大値となる
- ひっくり返す行の場合それぞれについて、上記のように最大値を求めて、それらすべての最大値の答え
AOJ0121: 7パズル
ABC070 D: Transit Tree Path
解き方
a
からK
への距離とK
からb
への距離の和を出力するK
から各頂点への最短距離は、木なので、DFSすればO(n)
で求まる。
ハマったところ
- 0-indexと1-index混ぜてた
- 読み込み時に変えておくべきという話はありそう
- 最初全頂点から全頂点を求めようとして、
O(n^2)
になって困ってた。