西瓜の備忘録

競プロとかで気づいたこととか考察を書き留めるためのブログ

リハビリ(ARC064E)

半年近く虚無をしていました

 

E - Cosmic Rays

 

問題概要:(xs,ys)から(xg,yg)への最短経路長問題

ただしN個の点(xi,yi)の半径ri内は距離をカウントしない

 

制約:

  • 109xs,ys,xt,yt109
  • (xs,ys) ≠ (xt,yt)
  • 1N1,000
  • 109xi,yi109

 

任意のバリア2点間を移動することを考える。(xi,yi)から(xj,yj)へ移動するときの経路長が最も短くなるのは直線で移動するときなので、スタートとゴールをr=0のバリアと考え、各バリア間に重さmax(0,{\sqrt{(xi-xj)^2+(yi-yj)^2} - (ri+rj)})の辺を張ってdijkstraをするとスタートからゴールまでの最短経路長が得られる。

隣接行列を使ってdijkstraで解くと計算量はO(N^2)