366.1

250

与えられた整数配列の値だけ、足したり引いたりして、途中経過が0から上限値の間にあるようにした時に、最終的な最大値を答えよという問題。


毎回作れる値を覚えておいて、次を生成するという単純DPでした。

500

ギターと演奏できる曲リストが与えられるので、最大数の曲を演奏できるような最小本数ギター集合のうち、アルファベット順で最初に出てくるものを答えよ、という問題。


必死に実装するわけですが、曲集合が50個くらいなのにintでやってしまって、ダメ。なんでチャレンジされなかったんだろう、というひどいソース。

1000

地図と現在地と目的地が与えられるので、指定された時間ちょうどに目的地に初めて到達するような時に、かかるコストを答えよ、という問題。コストは信号で止まらなかった時と、特定の場所を通った時に発生する。


時間が100までなので、ひたすら状態を覚えておいてループするだけ。実装が大変というか面倒なんだけれど、更新関数自体は実はさほどでもない。