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 只算一次,圖中點 邊數量不同。出現上述情況時,環由至少兩個簡單...