553.1

アルゴリズムって感じではなく、簡潔にコード書きましょうってコンテストになりつつある。

250

たくさんの0が入っているスタックがある。正の整数をスタックに積む操作と、スタックから二つ要素を取り出して足した結果をスタックに積む操作の列が与えられる。最後にスタックの一番上にある値を目的の値にしたい。操作の途中に一つだけどの操作か分からないものがあるので、その操作をどれに変更すれば良いか答えよ、という問題。


両方のパターンを試すだけ。正の整数をスタックに積む操作の場合、とても大きい値を積んだことにしておくと、最終結果にとても大きい値が出るので、適当な値に変更してやれば良い。これは整数にエンコードしているのと同値なので、きちんと構造体を作って計算してやっても問題ないが、言語によっては若干面倒。

500

盤面を二色に塗り分けることを考える。任意の点から開始して、上下左右任意の方向に進んで良いが、一度進んだ方向と逆の方向に進むことはできない。このときの可能な塗りわけ方は何通りあるか答えよ、という問題。ただし盤面の一部が指定された色になるように塗り分けなくてはならない。


DPやるだけ。現在の塗りわけ状況とどっちの方向に進んで良いかを状態に持つ。重複が多いので適切に除去すること。

1000

見てない。