270.1

集中してやらないとダメだなぁ、という感じ。取り敢えず投げてみる、というやり方はやめにした方が良さそう。

300

個人の上位のスコアが公開されていて、各チーム4人のとき、チーム間での順位の可能な最大値と最小値を答えよ、という問題。公開されていないメンバーのスコアは公開されている全員よりも小さいとする。


残りのメンバーの点数を0点と見るか、可能な最大とみるか、で各チームの可能なスコアを計算して、そこから順位を算出するだけ。

600

2点間での移動コストと、ある点に到達したときに得られる収入が与えられ、最初の場所と最後の場所が指定されるとき、最終的な収支の最大値を答えよ、という問題。


WarshallFloydするだけ。到達できなければ不可能。到達できるケースで、A->BとB->CにパスがあってB->Bに値が正のパスがある場合は、無限ループで収支を無限にできる。(これを導出してからコード書かないとダメだなぁ。)

900

四角い枠の中に、目的の物体が入るかどうか答えよ、という問題。円か長方形が与えられる。


円は半径で与えられるので、枠の短辺が半径の倍以上あれば良い。短辺側に収納するには最低x度傾ける必要があって、長辺側に収納するには最低y度傾ける必要がある、というのをバイナリサーチで求めて、その合計が90度以内であれば入るし、そうでなければ入らない、とすれば良い。0度から90度までを(最悪のケースを考えて)50kくらいに分割してみたけれど、精度が足りないみたい。(最初からバイナリサーチしなさいよ、ということではある。)