SlideShare a Scribd company logo
1 of 15
Download to read offline
K問題
Manhattan Warp Machine 2
!
渡辺(kzyKT)
問題概要
3次元の格子点上で、現在地からマンハッタン距離が
di離れた格子点へ移動できる。
(0,0,0)からスタートし、M個の座標を全て訪れる時
の最短移動回数を求める。
1つでも訪れることが不可能な場合は-1を出力。
解説
3次元と2次元に違いはないので、今回は2次元で考えていきます
例: d={2,3}で移動出来るところ (一例)
!
(0,0)
出発地点からのマンハッタン距離が
同じところは、同じ回数で移動出来る
!
つまり、各マンハッタン距離に対して
最短移動回数を求めればいい
解説
• 1回で移動できるところ
各di
!
0 1 1 1
解説
• 2回で移動できるところ
1次元との大きな違い : 寄り道が出来る
diとdjのペア(di dj)に対して、(dj-di) (dj+di)まで1つ置き
!
0 2 2 2 2
3, 5の場合
解説
• 2回で移動できるところ
15 15のペアを見ても良いが、範囲が狭まるだけの無駄が生じ
る場合がある
例えば、 ペア : 移動場所
2, 5 : 3, 5, 7
4, 5 : 1, 3, 5, 7, 9
!
2, 5のペアを見るだけ無駄である
解説
• 2回で移動できるところ
!
偶・奇、奇・偶の場合 (マンハッタン距離が奇数の場所へ移動可能)
diに対して、di以下で最大のdiと偶/奇が異なるもの
!
偶・偶、奇・奇の場合 (マンハッタン距離が偶数の場所へ移動可能)
dの中で最大値のみ見れば良い
解説
• 3回以上
小さい距離を移動したり、寄り道したりするのは1度だけで良い
残りは出来るだけ大きく移動した方が得
偶数と奇数では移動出来る場所が違うので、
dの中で偶数最大と奇数最大の2つで移動する
解説
• 3回以上
偶数最大 : deven 、奇数最大 : dodd とする
for文で1 6 105まで回して値を更新していく
D[i] = min(D[i], min( D[i-deven], D[i-dodd] )+1)
D
D[i]
解説
• 3回以上
i-dが負になることがあるが、
負への移動回数も正と同じなので、絶対値を取ればいい
D
D[i]0-2 2
解説
• 3回以上
¦ i-d ¦ がiより大きくなることもあるが、
既に2回までに行ける場所は見ている。
偶数部分は、dの最大値 2までは2以下で更新されているので、
D[i]は3以下になることが保証されている。
D
D[i]0-4 4
0 2 2
解説
各マンハッタン距離について、最短移動回数が求まったので、 
(0,0,0)を含めたM+1個の座標の全てのペア間のマンハッタン距
離を求めて、最短移動回数を調べる
これをもとに、M個全て訪れた時の最短移動回数を求める
解説
bitDP
dp[ 今まで訪れた星のbit ][ 現在の星 ] = 最短移動回数
O( 215 15 15 )
または、(0,0,0)を含めた
O( 216 16 16 )
dijkstraをしても良い
ジャッジ解
• 渡辺 C++ 39行
• 山下 C++ 90行
• 山口 C++ 101行
• 大桃 C++ 143行
結果
• First Submission
 ・On-site: Almost_Retired (2h 26m)
 ・Online: sigma425 (56 min)
• First Accepted
 ・On-site:
 ・Online: reew4492 (4h 50m)
• Success Rate: 2.38% (1/42)

More Related Content

More from NariyoshiChida

More from NariyoshiChida (10)

RUPC2015Day2 - E
RUPC2015Day2 - ERUPC2015Day2 - E
RUPC2015Day2 - E
 
RUPC2015Day2 - I
RUPC2015Day2 - IRUPC2015Day2 - I
RUPC2015Day2 - I
 
RUPC2015Day2 - D
RUPC2015Day2 - DRUPC2015Day2 - D
RUPC2015Day2 - D
 
RUPC2015Day2 - F
RUPC2015Day2 - FRUPC2015Day2 - F
RUPC2015Day2 - F
 
RUPC2015Day2 - A
RUPC2015Day2 - ARUPC2015Day2 - A
RUPC2015Day2 - A
 
RUPC2015Day2 - B
RUPC2015Day2 - BRUPC2015Day2 - B
RUPC2015Day2 - B
 
RUPC2015Day2 - H
RUPC2015Day2 - HRUPC2015Day2 - H
RUPC2015Day2 - H
 
RUPC2015Day2 - 総評
RUPC2015Day2 - 総評RUPC2015Day2 - 総評
RUPC2015Day2 - 総評
 
RUPC2015Day2 - J
RUPC2015Day2 - JRUPC2015Day2 - J
RUPC2015Day2 - J
 
RUPC2015Day2 - G
RUPC2015Day2 - GRUPC2015Day2 - G
RUPC2015Day2 - G
 

RUPC2015Day2 - K