構造圖是關鍵
乙個兵有兩種耗費模式,要麼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年不多不長,工作應該是挺穩定了。但是軟體行業你也知道,分分鐘都有公司興起,分分鐘都有公司倒閉。最近移動行業變數很大,昔日的巨頭風光不在,如今正在風頭的幾家你死我活的互相較著勁。年歲漸長,也是一直在焦慮著以後該往哪個方向走,從工作到現在...