UVaに寝返り

今までSPOJを使っていたけどICPCではどうもUVaの方が問題の傾向が合っているような気がしたのでUVaの問題を解くことにした.
数問だけ解いたのでメモ.

100 - The 3n+1 Problem

あらかじめ2000000くらいまでの値をメモ化+再帰で求めておく.

101 - The Blocks Problem

実装するだけ.
各操作で共通する処理が多いので,関数でまとめて共通化しておくと楽.

102 - Ecological Bin Packing

6通りあるので全て試すだけ.

103 - Stacking Boxes

  1. 箱がnestする条件
  2. nestする箱の最長列の求め方

の2つが必要になるが,1.は各成分でソート→成分ごとに比較 で容易にできる.
2.は1.によってnest関係の有向グラフを構築できるので,メモ化+再帰でその最長パスを求める.
(ログがいるのでログも同時に保存しておく.)