No 25 POJ3308 實數網路流

2021-09-25 11:11:54 字數 1151 閱讀 7259

構造圖是關鍵

乙個兵有兩種耗費模式,要麼ri開銷,要麼cj開銷

自然想到源點到中間節點為ri開銷,中間節點到匯點為cj開銷,求最小割。

兵的關係如何表示?

傘兵沒有帶權值,所以只表示一種行和列的關聯關係,所以想到中間節點分為ri和cj,每個傘兵鏈結ri和cj,正向邊費用為inf,反向邊費用為0。

關 於反

向邊為什

麼為

0\red

關於反向邊為

什麼為0

:反向邊的作用是修正之前傘兵的分配方式,倘若為inf,則無法起到修正作用。

至於求費用乘積,取個對數即可,網路流

只能算加

法\red

網路流只能算

加法

// shelldawn

// poj3308

// no.25

#include#include#include#include#include#define mm(x,y) memset(x,y,sizeof(x))

#define inf 0x3f3f3f3f

using namespace std;

#define maxl 110

int n;

struct edge;

edge e[maxl*maxl];

int cnt = 1;

int pre[maxl];

int v[maxl];

double ans ;

void add(int from,int to,double v,int r)

bool bfs(int s)}}

if(v[n+1] > 0) return true;

return false;

}double dfs(int now,double minflow)

}if(flow <= 0) v[now] = 0;

return flow;

}void dinic()

int main()

for(int i=a+1;i<=a+b;i++)

for(int i=0;idinic();

printf("%.4f\n",exp(ans));

}return 0;

}

動態規劃經典問題 最長上公升子串行poj2533

這裡我們拆分出的子問題不是n個數的最長公共子串行的長度,而是以sta i 的值為結尾的最長公共子串行的長度。舉個例子啊,比如1 6 1,n個數的最長公共子串行的長度是2 這個序列是1 6 這也就是最終答案 而以sta i 為結尾的最長公共子串行長度是1 這個序列是1 因為知道了這個以每個數結尾的公共...

PTA 結繩 25分 25分???

給定一段一段的繩子,你需要把它們串成一條繩。每次串連的時候,是把兩段繩子對折,再如下圖所示套接在一起。這樣得到的繩子又被當成是另一段繩子,可以再次對折去跟另一段繩子串連。每次串連後,原來兩段繩子的長度就會減半。給定 n 段繩子的長度,你需要找出它們能串成的繩子的最大長度。每個輸入包含 1 個測試用例...

25歲,何去何從?

我,87年生,乙個女程式設計師。至今也工作也已有3年多,按理說,3年不多不長,工作應該是挺穩定了。但是軟體行業你也知道,分分鐘都有公司興起,分分鐘都有公司倒閉。最近移動行業變數很大,昔日的巨頭風光不在,如今正在風頭的幾家你死我活的互相較著勁。年歲漸長,也是一直在焦慮著以後該往哪個方向走,從工作到現在...