HDU 1839 (最短路 二分)

2021-10-23 04:57:53 字數 1546 閱讀 9753

帶權》=1的最短路(短-時間路徑)

dijkstra跑最短路

帶權大於》=1,bfs沒法跑,鄰接矩陣沒法跑,n=1e4,那肯定是乙個稀疏圖了,用鄰接矩陣(鏈式前向星)

容量最大——二分->滿足單調性

尋找乙個最大容量,從s到t的路徑,不超重,同時在規定時間達到t。

//#pragma gcc optimize(2)

#include

//typedef long long ll;

#define ull unsigned long long

#define int long long

#define f first

#define s second

#define endl "\n"

//<#define eps 1e-6

#define base 131

#define lowbit(x) (x&(-x))

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

#define maxn 0x7fffffff

#define inf 0x3f3f3f3f3f3f3f3f

#define pa pair

#define ferma(a,b) pow(a,b-2)

#define pb push_back

#define all(x) x.begin(),x.end()

#define memset(a,b) memset(a,b,sizeof(a));

#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);

using

namespace std;

void

file()

const

int n=

5e5+5;

struct node

;struct edge

e[n]

;int head[n]

,pos=-1

,vis[n]

,dis[n]

;void

add_edge

(int from,

int to,

int dis)

vectorvec;

int n,m,t;

bool

check

(int mid));

while

(!pri.

empty()

));}

}}return dis[n]

<=t?

true

:false;}

signed

main()

cout<1<}return0;

}

hdu 1839(最短路 二分)

hdu 1839 1 題意 有n個點,m條路徑,1是起點,n是終點,最多tmin 經過一條路徑需要花費d分鐘,這條路徑的最大容積是c,就是只有容積小於路徑容積的貨物才能通過。問從1 n在t分鐘內,最多能運多少體積的貨物。2 思路 記錄所有的體積,從小到大排序,二分查詢最大且時間之和在t分鐘之內的體積...

hdu 2962 最短路 二分

題意 最短路上有一條高度限制,給起點和最大高度,求滿足高度最大情況下,最短路的距離 不明白為什麼列舉所有高度就不對 1 include2 include3 include4 const int maxint 999999 5 int c 1005 1005 2 dist 1005 h 1005 6 ...

hdu2363Cycling 二分 最短路

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