nu practice 12/05/31
ishikadoさんのチームの練習会がVirtual Arenaで開かれていたので勝手に参加させていただいた
UVA 10803 Thunder Mountain
問題
整数座標がn点ある。
各点対に関して、距離が10以下なら直接移動することができる。
ある点からある点に移動する中で最も遠いものの距離を求めよ。
もし移動できない点対があれば、"Send Kurdy"と出力せよ。
制約
1
解法
各点をノードとするグラフを考える。
全点対に関して距離を計算し10以下ならその距離に応じた重みのついたエッジを張る。
全点対間距離を求め、すべての点対を全探索して最大の距離を求める。
たどり着けないものがあったらSend Kurdy
UVA 10849 Move the bishop
問題
N*Nのチェス盤を考える。
現在のビショップの位置と目標の位置が与えられるので、何ステップの移動で目標の位置までたどり着けるか出力せよ。
たどり着けない場合は"no move"と出力せよ。
ただし、ビショップは4つ斜め方向にいくらでも移動することができる。
制約
1<= クエリの数 <= 100
1<= N <= 10^9
1<= 座標値 <= N
解法
現在の位置を(x1,y1),目標位置を(x2,y2)とする。
x1+y1 != x2+y2 (mod 2)
ならたどり着けない。
(x1,y1) = (x2,y2)
なら0回。
abs(x1-x2) = abs(y1-y2)
なら1回。
そうでなければ2回。
最初0回を見落としていた。
UVA 10816 Travel in Desert
問題
ノード数N、エッジ数Eのグラフが与えられる。
各エッジは距離Dと最高温度Rを持つ。
たどるエッジの最高温度ができるだけ小さくなるように、ノードSからノードTまで行きたい。
もし最高温度が同じになるような経路が複数ある場合、最も距離が短いものを選ぶ。
そのような経路の辿るノード番号の列、その経路の距離、最高温度を出力せよ。
制約
1<=N<=100
1<=E<=10000
20<=R<=50
0
UVA 10894 Save Hridoy
問題
"SAVE HRIDOY"という文字列を大きさや向きを変えながら出力する問題。
各文字は最小で5*5文字の'.'と'*'を使って表現する。
与えられるNが正のとき、N倍した文字を横に並べる。
負のとき、-N倍した文字を縦に並べる。
文字と文字の間は'.'を並べるのに注意。
サンプルを見るのが早い。
制約
0
解法
やるだけだがそこそこ面倒。
最小単位のものを埋め込んでNに応じてうまく出力を変える。
UVA 10898 Combo Deal
問題
I個の商品があり値段が与えられる。
Cタイプのセット販売があり、どの商品を何個含むかと値段が与えられる。
Q個のクエリを処理する。
各クエリは各商品がどれだけ欲しいか与えられるので、それらの商品をちょうど買えるような買い方の最小値段を求めよ。
制約
I<=6
C<=8
Q<=10
クエリで要求される各商品の個数は9以下
解法
I<=6で、クエリで要求される各商品の個数が9以下なので、クエリの種類は10^6個。
メモ化再帰か何かで求めてやれば良い。
計算量はO(10^I*I*C)