題解 洛谷P1396 營救

2022-06-29 17:15:10 字數 700 閱讀 6874

題目傳送門

一道並查集+二分的題。(刷水題找信心

看到最大的最小就想到二分。那就稍微看看單調性:

易得存在乙個滿足題意的擁擠度 \(w\) ,並且使得 \(w-1\) 不滿足題意,而 \(w+1\) 滿足題意。稍微想想可知此題滿足二分的單調性,就可以二分 \(w\) 來求解。

考慮二分的檢查函式,題目只要求我們判斷圖上兩個節點是否連通,那麼用並查集維護即可。

#includeconst int maxn = 2e4 + 10;

struct node // 儲存邊的結構體

a[maxn];

int father[maxn], n, m, s, t;

// 並查集模板

void init(int size) // 初始化

int find(int x) // 找祖先

void uni(int x, int y) // 合併

bool check() // 找是否有公共祖先

bool solve(int x) // 二分的判斷函式

int main()

if (solve(r)) // 結束後 r 更小,這麼寫省點麻煩

printf("%d\n", r);

else

printf("%d\n", l);

return 0;

}

洛谷P1396 營救 題解

這其實一看就是乙個最短路的近似模板的題目,但我們要注意到兩個區之間可能會有多條道路,所以說我們只需要在最短路模板的基礎上把加和改為最大值即可,因為題目還說了要求出最後的結果是最大值的最小,所以我們可能會自然而然的想到二分,然而此題跑個dijkstra或spfa甚至是克魯斯卡爾最小生成樹都行。然而據某...

洛谷 P1396 營救

題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...

洛谷 P1396 營救

題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...