poj 3621(引數搜尋 spfa)

2021-05-28 15:26:37 字數 889 閱讀 1955

01整數規劃問題就是求解方程(a1*x1+a2*x2+..+an*xn)/(b1*x1+b2*x2+..+bn*xn)的最小值/最大值問題。其中xi = 0或1(i=1,2...n)

對於此類問題我們可以通過二分來求解很接近答案的近似值。我們可以先令:

(a1*x1+a2*x2+..+an*xn)/(b1*x1+b2*x2+..+bn*xn)=l,則我們可以將此式轉換為:x1*(a1-b1*l)+x2*(a2-b2*l)+...xn*(an-bn*l)=0,我們先定義乙個估計值val,如果這個值使得上面的式子小於0我們就可以知道val>l,如果上式等於0,則val = l;如果大於0,則val

講解** 

#include#include#include#includeusing namespace std;

const double inf=1000000000000.00;

const int n=5010,m=1010;

#define cc(m,v) memset(m,v,sizeof(m))

struct nodeedge[n];

int head[m],p,vis[m],num[m],sum[m];

double dis[m];

queueque;

void ainit()

void addedge(int u,int v,int w)

bool spfa(double val,int n)}}

return 1;

}int main()

lef=0,rig=1000;

while(rig-lef>0.0001)

printf("%.2lf\n",ans);

}return 0;

}

poj 3621 最優比率環

思路 之前做過最小比率生成樹,也是屬於0 1整數劃分問題,這次碰到這道最優比率環,很是熟悉,可惜精度沒控制好,要不就是wa,要不就是tle,鬱悶啊!實在是懶得碼字,直接copy吧 題目的意思是 求乙個環的除以,使得那個環在所有環中除以最大。令在乙個環裡,點權為v i 對應的邊權為e i 即要求 i ...

poj3621 最優比率環

這道題的意思是給你乙個圖,有點權和邊權,你的任務是求乙個圈,使得這個圈的點權和比邊權和最大,我們依然可以使用01規劃的知識,將一條邊的權值變為ai mid bi,看看這個圖裡面有沒有正環,有的話說明還存在更優的解,這裡的正環問題可以將邊權值取反變成負環問題,如下 include include in...

POJ 3621 二分 判定負環

題意 傳送門 poj 3621 sightseeing cows 題解二分答案,問題轉化為判定滿足圖中存在乙個環,滿足下式的最大的 xxx fi t j x frac x tj f i x 若環上存在重複經過的點,其 f if i fi 只算一次,圖中點 邊數量不同。出現上述情況時,環由至少兩個簡單...