【問題描述】
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...