這道題的意思是給你乙個圖, 有點權和邊權, 你的任務是求乙個圈, 使得這個圈的點權和比邊權和最大,我們依然可以使用01規劃的知識, 將一條邊的權值變為ai-mid*bi, 看看這個圖裡面有沒有正環, 有的話說明還存在更優的解, 這裡的正環問題可以將邊權值取反變成負環問題, **如下:
#include #include#include
#include
#include
using
namespace
std;
const
double eps = 1e-4
;const
int maxn = 1000 + 10
;const
int inf = 0x3fffffff
;int
n, m;
double
vw[maxn];
struct edge;
vector
g[maxn];
bool inque[maxn]; //
是否在佇列中
double dis[maxn]; //
最短路長度
int cnt[maxn]; //
入隊次數
bool spfa(double
mid)
queue
que;
que.push(1);
inque[
1]=true; dis[1]=0
;
while(!que.empty())}}
}return
false; //
不存在}
intmain()
); }
double l=0, r=high+5
;
while(r-l >=eps)
printf(
"%.2f\n
", l);
return0;
}
poj 3621 最優比率環
思路 之前做過最小比率生成樹,也是屬於0 1整數劃分問題,這次碰到這道最優比率環,很是熟悉,可惜精度沒控制好,要不就是wa,要不就是tle,鬱悶啊!實在是懶得碼字,直接copy吧 題目的意思是 求乙個環的除以,使得那個環在所有環中除以最大。令在乙個環裡,點權為v i 對應的邊權為e i 即要求 i ...
POJ 3621 二分 判定負環
題意 傳送門 poj 3621 sightseeing cows 題解二分答案,問題轉化為判定滿足圖中存在乙個環,滿足下式的最大的 xxx fi t j x frac x tj f i x 若環上存在重複經過的點,其 f if i fi 只算一次,圖中點 邊數量不同。出現上述情況時,環由至少兩個簡單...
最優比率環 最優比率問題
給定有點權和邊權的圖,要求找乙個環,使環的點權和與邊權和的比值最大。此時求最大比率的式子與01規劃的式子有所不同 總算式加個負號 核心 取定乙個 r 值以後,帶入最短路的新的dis更新公式,再判斷是否存在至少乙個負環 找出乙個負環即可 存在負環和不存在負環兩種情況指示了 r 應如何取下乙個值,直到到...