二分給出的p條邊,把大於的都當做電信贈送的線路,小於等於的都當做農夫自己買的線路。
前者權值設為1,後者權值設為0,則最短路跑出來的結果和k值比較就知道是否滿足,繼續二分。
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-6
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
#define ll long long
#define lson l,m,(rt<<1)
using namespace std;
#include#include#includeusing namespace std;
int n;
int v[1024],path[1024];
int map[1024][1024],dis[1024];
int p,k;
int dijkstra(int s)
dis[s]=0;
for(i=1;i<=n;i++)
int l=1,r=p,mid;
int ans;
while(l<=r)
else l=mid+1;
}printf("%d\n",ve[ans].d);
}return 0;
}
poj 3662 最短路 優先佇列 二分法
題目大意 乙個無向圖有n個點,p條邊,邊上有權值,現要把1和n連線起來,但最多提供k條邊免費,花費取路徑中其餘的邊中最大權值,求所需的最小花費。即要求選擇若干條邊構成頂點1到頂點n的一條路徑,使得路徑上邊權最大值 不包括免費邊 最小.思路 假設a是可行解,即路徑上邊權最大值為a,則該路徑上邊權大於a...
poj 2253 二分 最短路
題意 a青蛙要去b青蛙所在的石頭,湖面上共有n個石頭,a在0,b在1,a到b可以跳到其它石頭上,要求到b的路程中,跳的最遠的一次?使這個最大距離最小。分析 雖然在最短路的題目裡看到這個題,不過讀完題我就想到了二分答案 並查集判聯通,二分最大距離,然後把不大於這個距離的邊的兩點放到乙個集合裡,最後判斷...
二分 最短路 dijkstra
洛谷p1462 通往奧格瑞瑪的道路 對於我這個只是聽過二分但是從來沒有寫過二分的人來說,看到這個題目時是懵逼的,啥是求最多一次收費的最小值,只能回頭開始學習二分,在一下幾種情況下,均可以用二分來解決。1.從有序陣列中查詢某個值。2.假定乙個解並判斷是否可行 3.最大化最小值 4.最大化平均值 這個題...