1. 程式人生 > >學習筆記第三節:差分約束系統

學習筆記第三節:差分約束系統

差分約束系統

      在進入正題之前先給大家簡單介紹一下差分約束系統主要是解決建立不等式的問題的。

正題

     你看你看xi-xj>=k1 , xj-xk>=k2.那麼xi-xk>=?    很明顯學過不等式的可以把兩邊相加一下就可以知道是k1+k2.

     那麼現在有加入兩條不等式xi-xq>=k3 , xq-xk>=k4     那麼現在xi-xk又大於等於多少???很明顯是xi-xk>=max(k1+k2,k3+k4).

      為什麼,因為大於等於號的並集很明顯是max。


如粉紅色部分。所以我們發現這個過程非常像求解最長路的過程。我們從xk到xj建一條k2的邊,xj到xi建一條k1的邊,同理從xj到xq,xq到xi建邊從xk開始跑一遍最長路剛好發現dis[xi]正是我們要求的值max((k1+k2),(k3+k4)).

所以我們要求這種大於關係的問題,就可以用最長路來求解。

我們知道了這個東西,就很容易推出小於等於的式子使用最短路來求的。

那麼我們就可以分別求最小值和最大值了。甚至還可以用來判斷是否有解(判斷是否進入一個點n次)SPFA

相關題目會在後面專題貼出