hdu 1839
(1)題意:
有n個點,m條路徑,1是起點,n是終點,最多tmin
經過一條路徑需要花費d分鐘,這條路徑的最大容積是c,(就是只有容積小於路徑容積的貨物才能通過。)
問從1~n在t分鐘內,最多能運多少體積的貨物。
(2)思路:
記錄所有的體積,從小到大排序,二分查詢最大且時間之和在t分鐘之內的體積。(和西安的m題一樣)
(3)注意:
二分時要l<=r,避免l = r的情況出現。
(4)**:
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int maxn = 5e5+10;
const ll inf = 2e9+10;
ll tim[maxn],t,cap[maxn];
int vis[maxn],tot,n,m,head[maxn];
struct nodecur[maxn];
void init()
void add(int x,int y,ll c,ll d);
head[x] = tot++;
}bool spfa(ll vol)
queue q;
q.push(1);tim[1] = 0;
while(!q.empty())
}} }
return tim[n]<=t;
}int main(void)
cap[0] = 0;cap[m+1] = 0;
sort(cap+1,cap+1+m);
int l = 1,r = m,mid;
ll ans = 0;
while(l<=r)
else r = mid-1;
} printf("%lld\n",ans);
} return 0;
}
HDU 1839 (最短路 二分)
帶權 1的最短路 短 時間路徑 dijkstra跑最短路 帶權大於 1,bfs沒法跑,鄰接矩陣沒法跑,n 1e4,那肯定是乙個稀疏圖了,用鄰接矩陣 鏈式前向星 容量最大 二分 滿足單調性 尋找乙個最大容量,從s到t的路徑,不超重,同時在規定時間達到t。pragma gcc optimize 2 in...
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...