傳送門
感覺是非常浪費時間的一道題
直接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個點嘛,感覺穩了,結果又...