597.1

釣り掘り。

250

文字列Aに対して、任意の位置の文字を先頭に移動させる、という操作を繰り返して文字列Bを作りたい。少なくとも何回の操作が必要か答えよ、という問題。


取り敢えず先頭にどんどん文字が入っていくということは、確定させるには後ろから、となるので、後ろから考える。要はBの後ろの方の文字列を作れるかどうかで、必要のない文字はどんどん前に飛ばしちゃっていい。ということで、Bの後ろの方の文字列がAに部分文字列として含まれるかどうか判定してやって、それに関係のない文字を適切な順番で投げるだけ。


最終的に同じ文字で構成されていれば同じ文字列を作ることができるはず。

600

凸包が与えられるので、その内部に含まれる頂点以外の格子点で三角形が作れるかどうか答えよ、という問題。


X座標ごとにY座標の範囲計算して、三角形があるか全探索する。明らかに頂点数が多い(2行2列)とかだと、探索するだけ時間の無駄なので、その辺は良きにはからう。やるだけゲーだけれど、普通の人は実装できないと思う。適当なコード書くとカモられる。

900

見てない。