AcWing 1170 排隊布局(差分約束)

2021-10-08 00:28:05 字數 1641 閱讀 5043

當排隊等候餵食時,奶牛喜歡和它們的朋友站得靠近些。

農夫約翰有 n 頭奶牛,編號從 1 到 n,沿一條直線站著等候餵食。

奶牛排在隊伍中的順序和它們的編號是相同的。

因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。

如果我們想象奶牛是站在一條數軸上的話,允許有兩頭或更多奶牛擁有相同的橫座標。

一些奶牛相互間存有好感,它們希望兩者之間的距離不超過乙個給定的數 l。

另一方面,一些奶牛相互間非常反感,它們希望兩者間的距離不小於乙個給定的數 d。

給出 ml 條關於兩頭奶牛間有好感的描述,再給出 md 條關於兩頭奶牛間存有反感的描述。

你的工作是:如果不存在滿足要求的方案,輸出-1;如果 1 號奶牛和 n 號奶牛間的距離可以任意大,輸出-2;否則,計算出在滿足所有要求的情況下,1 號奶牛和 n 號奶牛間可能的最大距離。

第一行包含三個整數 n,ml,md。

接下來 ml 行,每行包含三個正整數 a,b,l,表示奶牛 a 和奶牛 b 至多相隔 l 的距離。

再接下來 md 行,每行包含三個正整數 a,b,d,表示奶牛 a 和奶牛 b 至少相隔 d 的距離。

輸出乙個整數,如果不存在滿足要求的方案,輸出-1;如果 1 號奶牛和 n 號奶牛間的距離可以任意大,輸出-2;否則,輸出在滿足所有要求的情況下,1 號奶牛和 n 號奶牛間可能的最大距離。

2≤n≤1000,

1≤ml,md≤104,

1≤l,d≤106

不等式,並且使所有點聯通,i<=i+1+0

加入i+1向i的邊

AcWing 1170 排隊布局

本題同樣是差分約束的問題,要求 1 到 n 之間可能的最大的距離,這使得我們更加深刻的理解了差分約束的思想。在 acwing 1169 糖果裡,仔細的講解了差分約束的基本思想,以及求不等式組的最大解需要求最短路,求最小解需要求最長路,這裡不等式解的最大最小都是相對而言的。比如 a 2 a 1 1,a...

AcWing1170 排隊布局(差分約束)

對於第二問和第三問,只需要把1作為絕對值0點,即可在物理意義上解決,差分約束的關鍵是找到所有關係,一般而言,如果題目沒給,可以考慮超級原點。includeusing namespace std const int n 1e5 10 const int inf 0x3f3f3f3f int h n e...

281 排隊布局

當排隊等候餵食時,奶牛喜歡和它們的朋友靠近些。fj 有n頭奶牛,編號從1到n,沿一條直線站著等候餵食。奶牛排在隊伍中的順序和它們的編號是相同的。因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。如果我們想象奶牛是站在一條數軸上的話,允許有兩頭或更多奶牛擁有相同的橫座標。一些奶牛相互間存有好...