poj 2253 二分 最短路

2022-08-12 13:51:18 字數 917 閱讀 9387

題意:

a青蛙要去b青蛙所在的石頭,湖面上共有n個石頭,a在0,b在1,a到b可以跳到其它石頭上,要求到b的路程中,跳的最遠的一次?使這個最大距離最小。

分析:雖然在最短路的題目裡看到這個題,不過讀完題我就想到了二分答案+並查集判聯通,二分最大距離,然後把不大於這個距離的邊的兩點放到乙個集合裡,最後判斷一下a和b是否在同乙個集合即可。很快敲完了,交上去wa了,怎麼可能wa呢?百思不得其解,又試了幾發,還是wa。。最後無奈搜題解了,md,把lf改成f就過了。。。。

如果用最短路做也很容易,就是把最短距離d[i],看做0到i點經過的路徑中最大的一條邊,最短路就是維護這條最大邊最小即可。

二分 n^2(logn) 16ms

#include#include#include#include#include#include#include#include#includeusing namespace std;

const int n=200+9;

int fa[n];

int d[n][n];

int findfa(int x)

int n;

bool ok(int mx)

{ for(int i=0;ivec;

for(int i=0;i#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int n=200+9;

bool vis[n];

int d[n][n];

int dis[n];

int n;

int dij()

{ memset(vis,0,sizeof(vis));

for(int i=0;i

基礎最短路 二 POJ 2253

poj2253 青蛙跳 n為200。題意為 給出n個石頭,每個石頭給出他們的x和y座標。乙隻青蛙在這些石頭上面跳來跳去。但是青蛙跳躍能力有限。需要求的是,青蛙從石頭1跳到石頭2上,對他的跳躍能力要求最低為多少。也就是石頭1到石頭2路徑上,的最大邊,最小可以為多少。這裡dis陣列儲存的就不是原點到各點...

poj 2253 最短路變形 最大邊的最小值

題意 給出兩隻青蛙 以及其他石頭的座標,需要求出可以到達另乙隻青蛙的所有路徑中,青蛙跳躍距離的最小值 每一種路徑中 青蛙的跳躍距離又是不同的,需要看這條路徑中需要跳躍的最長距離 input 輸入將包含乙個或多個測試用例。每個測試用例的第一行將包含石頭數量n 2 n 200 下n行各包含兩個整數xi,...

二分 最短路 dijkstra

洛谷p1462 通往奧格瑞瑪的道路 對於我這個只是聽過二分但是從來沒有寫過二分的人來說,看到這個題目時是懵逼的,啥是求最多一次收費的最小值,只能回頭開始學習二分,在一下幾種情況下,均可以用二分來解決。1.從有序陣列中查詢某個值。2.假定乙個解並判斷是否可行 3.最大化最小值 4.最大化平均值 這個題...