申奧成功後,布布經過不懈努力,終於成為奧組委下屬公司人力資源部門的主管。布布剛上任就遇到了乙個難
題:為即將啟動的奧運新專案招募一批短期志願者。經過估算,這個專案需要n 天才能完成,其中第i 天至少需要
ai 個人。 布布通過了解得知,一共有m 類志願者可以招募。其中第i 類可以從第si 天工作到第ti 天,招募費用
是每人ci 元。新官上任三把火,為了出色地完成自己的工作,布布希望用盡量少的費用招募足夠的志願者,但這
並不是他的特長!於是布布找到了你,希望你幫他設計一種最優的招募方案。
方案一:單純形
思路:設第i類人招募了xi個,aij表示第i個人第j天是否工作,工作為1,不工作為0,則應滿足對於所有j,∑in
aijx
i>=a
j\sum_i^na_x_i >= a_j
∑inai
jxi
>=a
j,需要最小化z=∑
1nci
xi
z=\sum_1^nc_ix_i
z=∑1n
cix
i,根據對偶原理將矩陣轉置後變為最大化即可
#include
#define ll long long
using
namespace std;
const
int maxn=
10005
,maxm=
1005
,inf=
1e9;
const
double eps=
1e-6
;int n,m;
double a[maxn]
[maxm]
,b[maxn]
,c[maxm]
,v;//a為約束矩陣,有n行m列,c最大化z的係數,b為限制
inline
void
pivot
(int l,
int e)
v+=c[e]
*b[l]
;for
(int j=
1;j<=m;j++)if
(j!=e) c[j]
-=c[e]
*a[l]
[j];
c[e]
=-c[e]
*a[l]
[e];
}inline
double
******x()
}int
main()
printf
("%.0f"
,******x()
);}}
方案二:最小費用流 BZOJ1061 單純形法的初探
起因是一道timus的題目 長著一副經典的線性規劃的模樣 ax b求m in c x 然而我嘗試去網路流建模 無果。當時我就考慮 為什麼乙個明顯的線性規劃問題要用網路流去擬合呢?為什麼不就用該用的方法去做呢?於是我決定學學單純形法。單純形法本身並不難理解 只是有很多名詞可能讓剛開始看的小夥伴有點為難...
單純形求解線性規劃 BZOJ1061
推薦一篇 我們設xi為第i個志願者的招募次數,以樣例為例,則不難列出如下的線性規劃方程 minx1 0 0 2 x1 x2 0 3 0 x2 x3 4 那麼,根據 這個方程等價於 maxx1 x2 0 2 0 x2 x3 5 0 0 x3 2 我們發現,這是乙個線性規劃方程的基本形式,基本解為 然後...
三 單純形方法(原理)
目前,運用最廣的線性規劃方法就是著名的單純形方法。這種方法是g.b.dantzig在1947年提出的。幾十年的實踐證明,單純形方法的確是一種使用方便 行之有效的重要演算法。如今,它已經成為線性規劃的中心內容。單純形法的基本思路是有選擇地取 而不是列舉所有的 基本可行解,即是從可行域的乙個頂點出發,沿...