差分約束小結0 0

2021-07-23 00:00:37 字數 1840 閱讀 6664

在做poi的時候看到一題要用到差分約束的..

然後就興致勃勃的去學習了差分約束..

結果發現那一題只是運用到了差分約束系統的性質而已.. 然後套個tarjan++floyd

所以並沒有什麼卵用..

舉個比較簡單的例子吧..

n 個數,

m條限制,每條限制dj

−di≤

a ,然後求是否存在這麼個序列..

那麼就把式子化一下dj

≤di+

a ,那麼這就是個spfa最短路的模型了..

如果該圖存在負環,那麼就表示並不會存在這麼個序列..

題意:有乙個n×

m 的矩陣,問你能不能通過把同一行或同一列乘乙個數或者除以乙個數,使得最後每個數都屬於[l

,u] ..設a

i 為第

i 行乘的數,bj

為第j列除以的數..

那麼對於乙個ci

,j,就有l≤c

i,ja

ibj≤

u ..

然後同時除以ci

,j,得lc

i,j≤

aibj

≤uci

,j..

把除轉換成減,就要用到對數:lg

l−lg

ci,j

≤lga

i−lg

bj≤l

gu−l

gci,

j ..

那麼運用這個公式進行差分約束就好了啊0.0..

題意:有乙個有向圖,每條邊有邊權,然後有這麼個操作ha

lum(

v,d)

,把連向

v 的所有邊減去

d,把從

v 連出去的邊加上

d,求從

1 到

n的最短的邊的最大值,如果不存在就輸出no solution,如果可以無窮大就輸出infinite

二分乙個可能的值mi

d ,對於一條從

u 到

v的邊,用su

mi表示點

i 的操作次數,就有:mi

d≤w(

u,v)

+sum

u−su

mv那麼就差分約束就行了啊..

題意:有n個在一條直線上的房子, 每個房子有著不同的高度, 乙個超人可以將這些房子左右移動但不能改變房子之間的相對位置.現在超人要從最矮的房子跳到剛好比他高的房子上面, 且每次跳的房子都要比當前房子要高.那麼最後超人肯定會跳到最高的房子上面, 現在給出超人能夠跳的最遠距離, 問: 如何擺放這些房子, 使得超人能夠經過所有的房子跳到最高的房子, 又要使最矮的房子和最高的房子之間的距離最遠??(摘自discuss..)

你肯定看不懂題意0.0..(逃) 設第

i 個房子的位置是po

si,第i

個的編號為x,第

i+1 個的編號為

y ,那麼就有:y−

x≤po

sy−p

osx≤

d 然後差分約束搞搞即可..

題意:有

n 頭牛排成一列,中間有距離,其中有

x個第一種條件,有

y 個第二種條件

第一種條件給出a,

b ,

c,表示di

sb−d

isa≤

c 第二種條件給出

a ,b,

c ,表示di

sb−d

isa≥

c 那麼不就是顯而易見的嗎0.0..

對於每乙個條件,就可以得到:ci

,j≤a

i−bj

≤ci,

j 直接套啊0.0..

詳見開坑了啦啦啦..

差分約束小結

感覺這玩意挺簡單的。出不了太難的題啊。這種奇怪的圖是可以跑最長路的,因為負環遲早要退出。一般來說要先判圖中是否存在正 負環,可以用spfa記錄每個點鬆弛次數判斷。每個點在一開始都扔進佇列,或者新建超源與點連邊均可。第二種更加有邏輯,且能處理點有初始值的情況,方式為將超源到點的邊權賦為點權,點到超源的...

差分約束系統小結

一 內容 有n個變數,m個約束條件組成的不等式組成的系統,稱為差分約束系統。差分約束系統就是將這些不等式的關係轉換為圖,用最短路的方法求解。二 常見問題即求解方法 1 求出這些不等式中的最小值 解法 將不等式轉化為a b c的形式,建立b a的邊,長度為c,然後求出最長路徑,最長路徑的解就是結果。2...

POJ3169差分約束 SPFA 差分約束

思路 假設i j 兩隻奶牛可以站在同乙個位置,但是必須公升序排列,所以有差分約束方程d i d i 1 0 對於兩隻有好感的奶牛有差分約束方程d j d i k 對於兩隻反感的奶牛有差分約束方程d i d j k 有了約束方程就可以spfa include include include inclu...