BZOJ1061 Noi2008 志願者招募

2022-05-11 04:04:23 字數 1022 閱讀 4127

problem

最小費用最大流模型。

約定:下文採用格式\((u,v,f,c)\)表示以\(u\)為起點,\(v\)為終點,\(f\)為流量,\(c\)為費用的邊;\(s\)為源,\(t\)為匯

建模方法:

考慮一條時間軸。連邊\((s,1,inf,0)\),\((n,t,inf,0)\)。

對於每一天的限制,連邊\((i,i+1,inf-a[i],0)\)

對於每類志願者,連邊\((s[i],t[i],inf,c[i])\)

跑最小費用最大流即可

思路參考

#include #include #include #include #include #include #include #define maxn 1005

#define maxm 10005

using namespace std;

typedef long long ll;

template void read(t &t)

while(isdigit(c))

if(f)t=-t;}

const ll inf=0x3f3f3f3f3f3f3f3f;

int n,m;

int s,t;

ll ansc;

struct edge

g[maxn*maxn*2];

int head[maxn],ecnt=1;

void eadd(int u,int v,ll f,ll c)

ll dist[maxn],minf[maxn];

int inq[maxn];

int pree[maxn],prev[maxn];

bool spfa()}}

return dist[t]int main()

for(register int i=1;i<=m;++i)

while(spfa())

}printf("%lld",ansc);

return 0;

}

bzoj1061 Noi2008 志願者招募

跟上一道基本相同,可以單純形法解線性規劃,也可以費用流.寫費用流的話建圖就是一般的線性規劃轉費用流的套路,加上基變數,然後化成等式,每個下式減上式之後可以化成表示流量平衡的等式,然後根據等式建圖就好了,跑乙個最小費用最大流.寫單純形沒有寫網路流好理解,單純形的話因為這是最小化費用的,首先要轉化成對偶...

BZOJ1061 NOI2008 志願者招募

bzoj 我們設每類志願者分別招募了b i b i 個 那麼,我們可以得到一系列的方程 s i x t i b i a x s i x t i b i a x 一共n n 天,所以是 n role presentation n n個方程 因為有不等式讓我們很不爽,所以換成等式。這裡,設y i y i...

bzoj 1061 Noi2008 志願者招募

題目大意 專案需要n 天才能完成,其中第i 天至少需要ai 個人。布布通過了解得知,一共有m 類志願者可以招募。其中第i 類可以從第si 天工作到第ti 天,招募費用是每人ci 元。新官上任三把火,為了出色地完成自己的工作,布布希望用盡量少的費用招募足夠的志願者 題解 include include...