思路:先判斷afk的情況,以血量為權值,用spfa演算法計算一次最短路徑,檢查是否能在血量大於0的情況下到達終點。
然後,對各城市的過路費進行排序,用二分法依次嘗試能否在不超過某費用的前提下經過各個城市且到達終點時血量大於0。
1 #include 2 #include3 #include 4 #include 5
using
namespace
std;
6const
int n = 1e4+10, m = 1e5+10;7
const
long
long
int inf = (1ll<<61)-1;8
intu[m], v[m], w[m], first[n], next[m], money[n], n, m, hp, a[n];
9long
long
intd[n];
10bool cmp(const
int a, const
intb)
13bool spfa(int
cash)14;
19 cnt[0] = true
;20 dequedq;
21int
t;22 dq.push_back(0
);23
while(!dq.empty())
2440}41
}42 cnt[t] = false;43
}44return d[n-1] > hp ? false : true;45
}46void solve(void)47
53int l=0, r=n-1, mid, ans = 1
<<30;54
while(l<=r)
5562 printf("
%d\n
", ans);63}
64int main(void)65
74 sort(a, a+n, cmp);
75for(int i=0; i<2*m; ++i)
7685
solve();86}
87 }
洛谷1462 通往奧格瑞瑪的道路
洛谷1462 通往奧格瑞瑪的道路 題目背景 在艾澤拉斯大陸上有一位名叫歪嘴哦的神奇術士,他是部落的中堅力量 有一天他醒來後發現自己居然到了聯盟的主城暴風城 在被眾多聯盟的士兵攻擊後,他決定逃回自己的家鄉奧格瑞瑪 題目描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著...
洛谷 1462 通往奧格瑞瑪的道路
問題描述 在艾澤拉斯,有n個城市。編號為1,2,3,n。城市之間有m條雙向的公路,連線著兩個城市,從某個城市到另乙個城市,會遭到聯盟的攻擊,進而損失一定的血量。沒經過乙個城市,都會被收取一定的過路費 包括起點和終點 路上並沒有收費站。假設1為暴風城,n為奧格瑞瑪,而他的血量最多為b,出發時他的血量是...
洛谷 1462 通往奧格瑞瑪的道路
題目大意 有n個城市,m條雙向聯通的道路,到達每個城市需要耗費一定的血量和費用,如果血量就會死亡,求在可以到達奧格瑞瑪的情況下,所經過的所有城市中最多的一次收取的費用的最小值是多少。思路 spfa 二分答案 include define inf 1000000001 define m 100001 ...