51Nod 1671 貨物運輸

2021-08-08 16:08:13 字數 1134 閱讀 5452

acm模版

官方題解:

首先我們需要注意到最重要的一點,所有運輸方案同時進行,我們只需要計算最後到達的方案的花費時間的最小值。所以我們需要考慮的是乙個極限情況,在這個極限情況下,其他運輸方案全部是在允許範圍內的。所以我們可以二分列舉這個極限情況,判斷所有方案是否都在這個極限內,在的話就繼續縮小極限,不在的話就放大極限。至於這個極限呢,涉及到傳送門的位置,我們可以將傳送門的位置標記為兩個區間,初始化這兩個區間無限大,然後通過遍歷方案來不斷壓縮這個區間,如果所有的方案都通過後,區間依然是合法的,那麼這種極限就是合法的,反之,同理。

#include 

#include

#include

using

namespace

std;

const

int maxn = 5e5 + 10;

const

int inf = 0x3f3f3f3f;

int n, m;

int l[maxn], r[maxn];

bool check(int m)

st_l = max(st_l, l[i] + r[i] - m);

st_r = min(st_r, l[i] + r[i] + m);

ed_l = max(ed_l, l[i] - r[i] - m);

ed_r = min(ed_r, l[i] - r[i] + m);

if (st_l > st_r)

if (ed_l > ed_r)

}return1;}

int main()

for (int i = 1; i <= m; i++)

}int l = 0, r = n, m, ans = -1;

while (l <= r)

else

}printf("%d\n", ans);

return

0;}

51nod 1671 貨物運輸

公元2222年,l國發生了一場戰爭。小y負責領導工人運輸物資。其中有m種物資的運輸方案,每種運輸方案形如li,ri。表示存在一種貨物從li運到ri。這裡有n個城市,第i個城市與第i 1個城市相連 這裡1號城市和n號城市並不相連 並且從i號城市走到i 1號或者從i 1號走到i號需要耗費1點時間。由於高...

51nod1671 貨物運輸

開始天真的我以為這道題和運輸計畫是一樣的套路。於是寫了一發,debug後發現過了第乙個點,十分開心的交了一發,結果只過了第乙個點。後來發現這個並不是一樣的,因為修建黑洞之後路徑法變了,而運輸計畫沒有 樹上兩點間路徑唯一 於是,第一題就成了題解題.這道題顯然滿足二分性質。問題在與如何判斷合法。首先,m...

二分 曼哈頓距離 51Nod 1671 貨物運輸

題面在這裡 首先想到二分,設當前答案為 s 傳送門的兩個端點為x,y 則對於ti si s 的路徑,必須滿足 x si y ti s 這個可以理解為曼哈頓距離 而到某個定點 s i,ti 的曼哈頓距離相等的點構成的集合是乙個正方形 相當於判斷所有正方形是否有交 示例程式 include includ...