Regionals 2008 :: Asia - Taipei
フロー祭
http://rhodon.u-aizu.ac.jp:8080/arena/contest.jsp
http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=322
4259 - Dangerous Tunnels
問題
頂点数n+2、辺数tの重み付きグラフが与えられる。
辺はノード番号が小さいほうから大きい方へのみ通ることが出来る。
ノード0からノードn+1へ点素なパスk個を選ぶときその中の辺の最大値を最小化せよ。
制約
n<=200
k<=10
解法
最小費用流の変形版もしくは最大流+二分探索。
頂点に流量制限があるのでinとoutに分割する。
4260 - Fortune Card Game
問題
C個のカードがある。
カードには、番号、文字、次の番号が書かれている。
全く同じカードはないが、番号が同じカード等はある。
最初番号が1のカードから初め(複数あればその中の一つ)、その番号に書かれた「次の番号」と同じ番号のカードから一つ選ぶということを繰り返す。
このときカードに書かれた文字をつなげたものが得られる文字列となる。
また、このときのスコアを「次の番号」の和で定義する。
文字列が与えられるので、その文字列が得られるようにカードを選んでいったとき、スコアの最大値を求めよ。
制約
C<=800
文字列の長さ<=150
文字列に使われる文字:AからE
解法
dp[i][j] = i文字目まで選び次の番号がjのときのスコアの最大値
4261 - Trip Planning
経路復元有りのDP
4262 - Road Networks
強連結成分の個数
4263 - Early-Morning Pickup
問題
頂点数V、辺数Eのグラフで表される町がある。
R人の代表、C人の客、M個の工場がある。
R人の代表が出勤するとき、次のどちらかの行動を取る
- 自宅 -> 客の家の一つ -> 工場の一つ -> 会社
- 自宅 -> 会社
全ての客の家は1人の代表に訪問されなければならない。
このとき、R人の代表の出勤時間の平均値の最小を求めよ。
制約
V<=512
R>=C
解法
代表iが客jの家によったときにかかるコスト、客の家によらないときにかかるコストを求め、最小重み最大二部マッチングっぽいことをする。
このとき二部グラフの左側を代表ノードR個、右側を客ノードC個と客の家によらない事を表すノード1個とする。
4264 - Message
やるだけ
4265 - Lost Treasure
4266 - Space Elevator
問題がわからない… → 分かった(9/14)
問題
0を原点として、右側にr個、左側にq個の点がある。
各点にはポイントが設定されており、時間tにポイントpの点に止まった場合、max(p-t,0)のスコアが入る。
時間0には原点におり、距離1移動するのに時間1がかかる。
最適な順で点に止まった場合、得られるスコアの最大値を求めよ。
ただし全ての点に止まる必要はない。
制約
r,q<=100
ポイント、座標<=1000
解法
最初、右の点に止まって左の点に止まって、また右の点に止まるというようなことはないと思っていた。
しかし、例えば
2 1
1 10
5 100
100 1000
のようなケースでは、右に行って左に行って右に行くのが最良となる。
ということで
dp[左どこまでいったか][右どこまでいったか][時間][左と右どっちにいるか]
でDPする。
時間は最大999まで考えれば良いので2*10^7とかになって間にあう。
配列は最利用する。
4267 - Finding The Heaviest Path
DFS
4268 - Bonus Adjustment
問題
n行m列の行列の各要素が小数点以下2桁までの実数として与えられる。
各行と各列の和は変えずに、各要素を整数にしたい。
ただし、各要素の値を1以上変えることは許さない。
このようにして要素を変えた行列を求めよ。
ただしこの条件で行列が作れない場合はnoと出力せよ。
制約
n,m<=50
解法
行や列の和が固定された問題は最大流が多い気がする。
ということでこの問題も最大流。
行ノードと列ノード、ソース、シンクを頂点とする。
ソースから行ノード、列ノードからシンクへ対応する和を容量とした辺を張る。
行ノードiから列ノードjへの辺をどうするか。
この辺に流れるフローが答えの(i,j)成分になるようにしたい。
ところで、答えの(i,j)成分として許される候補は、それぞれ1個または2個である。
これは、(i,j)成分に下限と上限があると考えることが出来る。
よって、行ノードiから列ノードjへは、容量に加え最小流量の制限もあるような辺を張れば良い。
最小流量の制限もある場合の最大流の解き方は蟻本に乗っており、そのとおり実装した。