求最大值:跑最短路,約束條件寫作 dv−
du
<=w
d_v-d_u<=w
dv−du
<=w
,連邊u
−>v邊
權w
u->v邊權w
u−>v邊
權w,鬆弛條件為一般最短路條件,若圖中存在負環則無解。
求最小值,約束條件一般為dv−
du
>=w
d_v-d_u>=w
dv−du
>=w
,將不等式連邊同乘-1,寫作小於等於形式,跑最短路,最後結果為答案取相反數。
建圖技巧:
如果是一組解,那麼對於任意的常數b
bb,顯然也是一組解,故可以先求一組負數解,即假設∀i,
xi
<=0
\forall i,x_i<=0
∀i,xi
<=0
,然後增加乙個0節點,令x0=
0x_0=0
x0=
0。這樣以來就多了n個形如xi−
x0
<=0
x_i-x_0<=0
xi−x0
<=0
的條件,應從0向每個節點連一條邊權為0的邊,從0開始跑最短路,即能跑出一組解。
字首和思想建圖,這種型別題目中往往會指出所有的位置或物品平鋪在一條數軸上,然後給出若干個區間內限制資訊,例如∀i,
[li,
ri]內
物品數量
<=w
i\forall i,[l_i,r_i]內物品數量<=w_i
∀i,[li
,ri
]內物
品數量<=w
i,如果用sum來表示字首和,也即:sum
[r]−
sum[
l−1]
<=w
sum[r]-sum[l-1]<=w
sum[r]
−sum
[l−1
]<=w
,故只需在l−1
與r之間
連邊即可
l-1與r之間連邊即可
l−1與r之
間連邊即
可,當然題目中有時還會有一些特殊限制條件,比如每個位置上只能放乙個物品,那麼:∀i,
sum[
i]−s
um[i
−1
]<=1
,sum
[i−1
]−su
m[i]
<=0
\forall i,sum[i]-sum[i-1]<=1,sum[i-1]-sum[i]<=0
∀i,sum
[i]−
sum[
i−1]
<=1
,sum
[i−1
]−su
m[i]
<=0
,當然還可能限制總物品數量,那麼:sum
[n]−
sum[
0]
<=a
ll
sum[n]-sum[0]<=all
sum[n]
−sum
[0]<=a
ll。待更
差分約束系統
差分約束 若 s a s b k 建一條b到a 的長度為k的邊 若s a s b k 建一條b到a 的長度為 k的邊 是求最小值的最長路 是求最大值的最短路 注意到最短路演算法的鬆弛操作 if d j d i w i j d j d i w i j 這其中的三角形不等式 d j d i w i j ...
差分約束系統
差分約束系統 對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值 存在負環的話是無解 求不出最短路 dist 沒有得到更新 的話是任意解 第三 一種建圖方法 設...
差分約束系統
差分約束系統 x1 x2 0 x1 x5 1 x2 x5 1 x3 x1 5 x4 x1 4 x4 x3 1 x5 x3 3 x5 x4 3 不等式組 1 全都是兩個未知數的差小於等於某個常數 大於等於也可以,因為左右乘以 1就可以化成小於等於 這樣的不等式組就稱作差分約束系統。這個不等式組要麼無解...