PKU 3169 Layout

蟻本復習中。

問題

N頭の牛が、順に一直線に並ぶ。
牛には好き嫌いがあり、ML個の好きの関係およびMD個の嫌いの関係がある。


好きの関係は3つの整数AL,BL,DLにより指定され、
ALの牛とBLの牛が距離DL以内にいなければならないことを表す。


嫌いの関係は3つの整数AD,BD,DDにより指定され、
ADの牛とBDの牛が距離DD以上離れなければならないことを表す。


このとき、1番目の牛とN番目の牛の距離の最大値を求めよ。
いくらでも離れられるときは-2を、並び順が存在しないときは-1を出力せよ。
なお、複数頭の牛が同じ位置に立つこともできる。

制約条件

N≦1000
ML,MD≦10000
DL,DD≦10^9

方針

蟻本p104の解説の通り。

  • 牛が順に並んでいるという制約はd[i]≦d[i+1]と表され、
  • 好きの関係はBL≦AL+DL
  • 嫌いの関係はBD≧AD+DD

という不等式で書ける。


これは線形計画問題になっているが、
不等式に現れる変数が各辺1つ(かつ符号が一緒)なので、
グラフの最短経路問題に帰着できる。


グラフの始点sからの、頂点iの最短距離をd[i]と置く。
重みwの辺u→vがあったとき、不等式
d[v]≦d[u]+wが成り立つ。
逆に、この不等式を全て満たすようなdはd[i]-d[s]の最大値がsからiへの最短距離になっている。


ちょっと直感的にイメージが沸かないので類題を解きたいのだけど、どこかにないだろうか……