差分約束系統
概念: 差分約束系統是特殊的n元一次不等式組,它包含N個變量,x1−xn以及m個約束條件,每一個約束條件由兩個變量作差構成的,類似於xi−xj≤ak,需要解決的問題是找到一組解,使得給出的約束條件得到滿足。
如何解決差分約束系統 -> 最短路算法
現在已知
B−A≤c
C−B≤a
C−A≤b
如果現在要求C−A的最大值,那麼可以知道 max(C−A)=min(b,a+c)
現在我們將圖建出來,how to build?
差分約束建圖技巧
1.對於一個全部都是≤的不等式組,我們可以把式子轉化爲Xi≤Xj+W(i,j),即i,j建邊,Xj−>Xi=W(i,j),用最短路算法解決問題,求得最小值
2.對於一個全部都是≥號的不等式組,我們可以將每個式子轉化爲Xi≥Xj+W(i,j) ,即i,j建邊,Xj−>Xi=W(i,j),用最長路算法解決,求得最大值
如果dis[Xi]爲inf或-inf,那麼Xi爲任意解
如果求最短路的過程中出現負環,那麼說明該不等式組無解