HDU 2363 Cycling 列舉最短路

2021-10-10 16:50:16 字數 1035 閱讀 4430

傳送門

感覺是非常浪費時間的一道題

直接o (n

2)

o(n^2)

o(n2

)列舉上下界去跑最短路就行了…

也可以列舉下界,二分上界可能可以加速一下

#include

using

namespace std;

const

int maxn =

2e5+10;

const

int inf =

2e9+1;

struct edged[maxn]

;int head[maxn]

,cnt=1;

void

add(

int u,

int v,

int w)

,head[u]

= cnt;

}int dis[maxn]

,h[maxn]

,a[maxn]

,n,m,vis[maxn]

;typedef pair<

int,

int>p;

bool

dijstra

(int l,

int r)}}

return dis[n]

!=inf;

}int

main()

sort

( a+

1,a+

1+n )

;int h = inf,ans = inf;

for(

int i=

1;i<=n;i++

)//列舉下界

for(

int j=i;j<=n;j++

)//列舉上界

} cout << h <<

" "<< ans << endl;

cnt =1;

for(

int i=

1;i<=n;i++

) head[i]=0

;}}

HDU 2363 Cycling 列舉限制 最短路

題意 給n個點即n個點的高度,問一條最短路的最大高度差最小值是多少?想法 列舉所有兩個點之間的高度差,然後把這個限制用最短路去跑,可以完成的最小的限制即是答案,還有,不要寫無用的函式在上面,會wa,我丫的多謝了乙個絕對值函式,wa到死啊。include include include include...

hdu2363Cycling 二分 最短路

乙個無向圖 每個點都有高度,問從起點1到終點n的最高點減最低點的差值最小的前提下的最短路和這個差值 由於n 100所以可以先將這n個點按公升序排,列舉這個最短路的左邊最小mi,二分找最小的右邊ma include include include include using namespace std...

hdu2363 列舉 最短路 好題

這道題目一開始我的思路就是錯了,前前後後掙扎了n個小時。開始的想法是dijkstra,通過二分列舉高度差。但是發現乙個問題,就是因為dijkstra裡面優先選擇的是短的路。我直接二分高度差,是有兩個限制條件。然後就想到spfa,後來仔細想了想還是不行。最後用dfs了,才100個點嘛,感覺穩了,結果又...