CF #500
A
数列を2個に割って(l_max - l_min) * (r_max - r_min)をminimize
→arc073.contest.atcoder.jp
B
0, 1が書かれたグリッドなのでなにはともあれ二部グラフ
→連結なら完全グラフにできそう
→連結成分の個数
C
とりあえずどこを使うか決まってたら? →各場所についてするべき高さは簡単に決まる →自分自身を使うかどうかと、隣の要素を使うかどうかのみに依存する
→2個以上離れた要素は関係がない
→左から順に決めていくDP、キーを減らすのがちょっとテクニカル
D
観察すればなんとなく良さそうな戦略はわかるが、色々な場合があり、とても実装できるものではない
→物事を考えやすく
→先頭と最後に'a', 'b'をつけてもいいという天啓が降ってくる
→常に先頭と最後の文字が異なるため、扱いやすく
全体を一気にシミュレーションすると人が死ぬので、どうにか小さい部分問題に落とすような思考を出来ないか
→数列の(3, 1)個目を繋げば良さそう