poj 3662 二分最短路(建模與轉化)

2021-06-20 14:21:49 字數 784 閱讀 6985

二分給出的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.最大化平均值 這個題...