排隊(差分約束)題解

2021-07-16 17:13:53 字數 1123 閱讀 4116



【問題描述】

czy喜歡將他的妹子們排成一隊。假設他擁有n隻妹紙,編號為1至n。czy讓他們站成一行,等待自己來派送營養餐。這些妹紙按照編號大小排列,並且由於它們都很想早點吃飯,於是就很可能出現多隻妹紙擠在同一位置的情況(也就是說,如果我們認為妹紙位於數軸上,那麼多隻妹紙的位置座標可能相同)。

因為眾所周知的原因,某些妹紙之間互相喜歡,他們希望互相之間的距離至多為乙個定值。但某些妹紙之間互相厭惡,他們希望互相之間的距離至少為乙個定值。現在給定ml個互相喜愛的妹紙對以及他們之間距離的最大值,md個互相厭惡的妹紙對以及他們之間距離的最小值。

你的任務是計算在滿足以上條件的前提下,幫助czy計算出編號為1和編號為n的妹紙之間距離的最大可能值。

【輸入】

輸入檔案為 layout.in。

第一行有 3個整數,每兩個整數之間用乙個空格隔開,依次表示 n,ml和dl ;

此後ml行,每行包含三個用空格分開的整數a,b和d,其中a,b滿足1<=a<=b<=n。表示編號為a和b的妹紙之間的距離至多為d。

此後md行,每行包含三個用空格分開的整數a,b和d,其中a,b滿足1<=a<=b<=n。表示編號為a和b的妹紙之間的距離至少為d。

【輸出】

輸出檔名為 layout.out。

輸出檔案僅包含乙個整數。如果不存在任何合法的排隊方式,就輸出-1。如果編號1和編號n的妹紙間距離可以任意,就輸出-2 。否則輸出他們之間的最大可能距離。

【輸入輸出樣例】

layout.in

layout.out

4 2 1

1 3 10

2 4 20

2 3 3

27【資料範圍】

對於40%的資料,n<=100;

對於100%的資料,n<=1000;ml,mn<=10000;d<=1000000。

【題解】

1、思想:題目要求滿足一系列不等關係,很明顯用差分約束。

2、具體:(1)我們用dis陣列來表示每個點在座標的位置,一開始設dis[1]=0,則dis[n]為1號點到n號點的距離(即n點的座標)。

(2)又因為求dis[n]最大值,於是我們選擇用最短路。

【**】

暫無

luogu 3275 題解 糖果 差分約束

題面 大意 emmmmmmmm看到題面就知道真的不好總結。差分約束的裸題。將各類關係建成不同的邊。當op為1的時候,建乙個雙向邊權值為0 為2的時候,建立從a到b權值為1的邊 為3的時候,建立從b到a權值為0的邊 為4的時候建立從b到a權值為1的邊 為5的時候建立從a到b權值為0的邊 然後直接跑sp...

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

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

AcWing1170 排隊布局(差分約束)

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