225.1

ちゃんと英語を読みましょう。基本的に問題文を理解しないことが間違いの元の気がする。英語を読む気力がないのが難点。ちゃんとした英語教育受けてないのが問題なんだろうなぁ...。(いわゆる嫌悪感を植え付ける教育を受けた結果が現状だと思う。見るだけで嫌になる。)

250

プレースホルダというか$1,$2,...みたいな感じで文字列が与えられて、対応するデータが与えられるので、復元した結果を返せという問題。可能な候補が複数ある場合は、できるだけ大きな数字にマッチさせる。


実装あるのみ。配列が1オリジンなので、配列長を1大きく考えるか、配列長と等号比較するか、のどちらかでいいのだけれど、両方同時にやったらひどいことになった。

500

循環配列の中で、現在位置から、次に先頭文字が指定したものに該当する場所に移動できる状況を考える。このとき、ある場所から別の場所に移動する場合、一番遠い距離を答えよ、という問題。


二点間で移動できるかどうかを計算して、移動できない場合を無限距離くらいにしておいて、WarshallFloydするだけ。始点固定だと思って実装していたけれど、全部の始点について試すように修正するだけで解決。循環配列の要素が文字列なので、先頭文字の整数配列に変換しておかないと重かった。

1000

多角形の中に線を引いて三角形分解をしたい。可能な分解が複数ある場合は辞書順で最初のものを答えよ、という問題。


常に分解できる図形が与えられ、ある線を引いた後の二つの図形についても、その条件は保存されているはず。なので、辞書順に小さい方の辺を順番に試して、分解できたらそれを追加、というのを再帰的に繰り返すだけだと思う。線が引けるかどうかは、既存のすべての線との交差判定と、多角形の内部に入っていることの判定。内部にいるかどうかは辺上の適当な点が中にいるかどうか判定すれば良さそう。


実装はしていない。