差分約束系統

2021-07-22 19:36:46 字數 826 閱讀 1375

一直不知道差分約束是什麼型別題目,最近在寫最短路問題就順帶看了下,原來就是給出一些形如x-y<=b不等式的約束,問你是否滿足有解的問題

好神奇的是這類問題竟然可以轉換成圖論裡的最短路徑問題,下面開始詳細介紹下

比如給出三個不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我們可以把a,b,c轉換成三個點,k1,k2,k3是邊上的權,如圖

由題我們可以得知,這個有向圖中,由題b-a<=k1,c-b<=k2,得出c-a<=k1+k2,因此比較k1+k2和k3的大小,求出最小的就是c-a的最大值了

根據以上的解法,我們可能會猜到求解過程實際就是求從a到c的最短路徑,沒錯的….簡單的說就是從a到c沿著某條路徑後把所有權值和k求出就是c -a<=k的乙個

推廣的不等式約束,既然這樣,滿足題目的肯定是最小的k,也就是從a到c最短距離…

理解了這裡之後,想做題還是比較有困難的,因為題目需要變形一下,不能單純的算..

首先以poj3159為例,這個比較簡單,就是給出兩個點的最大差,然後讓你求1到n的最大差,直接建圖後用bellman或者spfa就可以過了

稍微難點的就是poj1364,因為他給出的不等式不是x-y<=k形式,有時候是大於號,這樣需要我們去變形一下,並且給出的還是》,《沒有等於,都要變形

再有就是poj1201,他要求出的是最長距離,那就要把形式變換成x-y>=k的標準形式

注意點:

如果要求最大值想辦法把每個不等式變為標準x-y<=k的形式,然後建立一條從y到x權值為k的邊,變得時候注意x-y

差分約束系統

差分約束 若 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就可以化成小於等於 這樣的不等式組就稱作差分約束系統。這個不等式組要麼無解...