171.1

難易度が上がってきた気がする今日この頃。解けなくなってくると明らかに間違っている他人のルーチンを落として帰ってきたりして...。

300

複数人からなるチームの、各人の順位が与えられるので、それらの上位5人の合計からチーム順にを決める。同点の場合は6人目の順位で決めるけれど、6人目がいない場合はより遅かったとみなす。それでも同点の場合はチーム名順に並べる。5人以上参加しているチームについて順番を答えよという問題。


単純にソートルーチンを実装するだけ。Comparatorを試しに使ってみたけれど、比較ルーチンが一種類でいい場合にはそのクラスに埋め込んでしまう方がいいんじゃないかなぁという感じ。

500

抵抗が複数個与えられるので、組み合わせて目的の抵抗値に一番近くなるような抵抗値を答えよ、という問題。


抵抗は5個なので、全パターンを計算する。グループを分けて組み上げた全パターンに対して、グループ間マージというようなこともやらないといけない。単純に次の1個を追加、というのを繰り返しても解けない点が重要。

1000

部屋の連結関係が与えられるので、一つ一つ閉鎖していって最初の部屋に戻るとき、どういう順番で閉鎖すれば良いか答えよという問題。できるだけ小さい部屋番号の部屋から先に閉鎖する。


どうやら部屋の連結関係は一方通行らしく、循環している場合に逆順にめぐるというようなことはできないらしい。有向グラフを作成して、分断されない最小の点を順番に選んでいけば良さそう。