牛ゲー(最短経路問題の双対問題が線形計画問題)
牛ゲー
最短経路問題の双対問題を考えると線形計画問題になるということ
最短経路が定まっており、始点 からの頂点
への最短距離を
とする。またコスト
の
から
への辺を
とすると
と表すことができる。逆にこのような制約式で定式化される問題は最短経路問題に帰着して解くことができる。
例題
H: Asteroids2 - 東京大学プログラミングコンテスト2013 | AtCoder
考え方
小惑星を破壊できるときの条件を定式化しよう。縦方向へのレーザーを 横方向へのレーザーを
としておく。そのとき
となる。
の形にするために
は
と変形する。また変数
を導入する。
は以下のようになる。
以下のように不等式を分けて考えることができて、 の形にすることができた。よって最短経路問題に帰着することができた。
軸
軸それぞれ
個の点と
の点上での最短経路を求めればよい。負閉路が存在する場合は最短経路が定まらないので条件を満たす値は存在しない。最短経路が定まれば条件を満たす値が存在する。よって閉路の有無を検出すればよい。これはベルマンフォード法で検出することができる。
初期値の値 に対して
となる場合は負閉路が存在する、そうでない場合は存在しないと判定すれば良い。
Submission #4081808 - 東京大学プログラミングコンテスト2013