14
C ガガガガガガガガ @takayuta1999

IJPC-2 C問題解説

Embed Size (px)

Citation preview

Page 1: IJPC-2 C問題解説

C ガソリンスタンド@takayuta1999

Page 2: IJPC-2 C問題解説

問題概要 (言い換え) N 個の頂点に対して、数 が与えられる 各頂点対 に対して、 に長さ の辺を張る このとき、個の最短路クエリに答えよ

Page 3: IJPC-2 C問題解説

解法 ワーシャルフロイド法やダイクストラ法ではサイズが大きすぎるため、時間が間に合わない 性質をつかもう

Page 4: IJPC-2 C問題解説

解法 問題文にも明示されてるようにまず一列に頂点を並べてみる 終点を固定して生き方を考える

1 2 3 4

Page 5: IJPC-2 C問題解説

解法 問題文にも明示されてるようにまず一列に頂点を並べてみる 終点を固定して生き方を考える (こういう誤植好き)

1 2 3 4

Page 6: IJPC-2 C問題解説

解法 終点を固定すると、ありうる道筋としては以下のどちらか 始点 と終点 に対して、 からどこにも止まらずに直接 に行く から別の駅 に行ってその後 に行く

Page 7: IJPC-2 C問題解説

解法 終点を固定すると、ありうる道筋としては以下のどちらか 始点 と終点 に対して、 からどこにも止まらずに直接 に行く から別の駅 に行ってその後 に行く 上の可能性は別に処理して下だけ考える

Page 8: IJPC-2 C問題解説

解法 最後に経由する駅 が のどちら側に存在するかで場合分けする の時を考える( の時も同様 )

Page 9: IJPC-2 C問題解説

解法 の時を考える より左で初めて の値がより大きくなるところを とする(ない場合は)

Page 10: IJPC-2 C問題解説

解法 の時を考える より左で初めて の値がより小さくなるところを とする(ない場合は ) このとき、 であるとしてよいことを示す

Page 11: IJPC-2 C問題解説

証明 まず、 を示す もし、 であるとしたら、と行かずに、途中で を経由した方が明らかによい よって、

Page 12: IJPC-2 C問題解説

証明 次に、 を示す もし、 であるとしたら、なので、 の一個前の位置を場合分けすると、に行かずにそのまま へ行ってもよいと分かり、最短経路として考えなくてもよいと分かる よって、

Page 13: IJPC-2 C問題解説

証明 以上より、 同様に、 への右からの変移も一意に定めてよい

Page 14: IJPC-2 C問題解説

解法 以上より、辺がに減った でも、辺の性質上、 の値が小さい頂点から順にそれを終点とする最短経路を求めていけば、すべての頂点間の最短距離がで求められる おわり