bzoj1221軟體開發 費用流

2022-03-28 17:56:21 字數 2102 閱讀 1950

題目傳送門

思路:網路流拆點有的是「過程拆點」,有的是「狀態拆點」,這道題應該就屬於狀態拆點。

每個點分需要用的,用完的。

對於需要用的,這些毛巾來自新買的和用過的毛巾進行消毒的,流向終點。

對於用完的,來自源點,可以用於消毒,連向需要用的點,還有一些毛巾留到明天消毒(其實意思是,消完毒,延後使用,但是這樣建邊麻煩)。

挺不錯的題目吧。

乙個非常坑的地方就是,a和b可能大於1000,所以拆點的點的編號要很小心,要判斷一下是否越界。

推薦乙個部落格。大佬的部落格

#include#define clr(a,b) memset(a,b,sizeof(a))

using

namespace

std;

typedef

long

long

ll;const

int maxn = 10010

;const

int maxm = 100010

;const

int inf = 0x3f3f3f3f

;struct

edge edge[maxm];

struct

pp

in[maxn];

inthead[maxn], tol;

intpre[maxn], dis[maxn];

intn,a,b,f,fa,fb;

int aa[2010

];bool

vis[maxn];

int n=maxn-2

;void

init()

void addv(int u, int v, int cap, int

cost)

bool spfa(int s, int

t) }}}

if (pre[t] == -1)return

false

;

else

return

true;}

//返回的是最大流,cost 存的是最小費用

int mincostmaxflow(int s, int t, int &cost)

for (int i = pre[t]; i != -1; i = pre[edge[i ^ 1

].to])

flow +=min;

}return

flow;

}int

main()

int s=0,p=1000,t=3010

;

for(int i=1;i<=n;i++)

intcost;

mincostmaxflow(s,t,cost);

printf(

"%d\n

",cost);

}

view code

time limit: 10 sec  memory limit: 162 mb

submit: 2103  solved: 1217

[submit][status][discuss]

某軟體公司正在規劃一項n天的軟體開發計畫,根據開發計畫第i天需要ni個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很多的服務,其中一項服務就是要為每個開發人員每天提供一塊消毒毛巾,這種消毒毛巾使用一天後必須再做消毒處理後才能使用。消毒方式有兩種,a種方式的消毒需要a天時間,b種方式的消毒需要b天(b>a),a種消毒方式的費用為每塊毛巾fa, b種消毒方式的費用為每塊毛巾fb,而買一塊新毛巾的費用為f(新毛巾是已消毒的,當天可以使用);而且f>fa>fb。公司經理正在規劃在這n天中,每天買多少塊新毛巾、每天送多少塊毛巾進行a種消毒和每天送多少塊毛巾進行b種消毒。當然,公司經理希望費用最低。你的任務就是:為該軟體公司計畫每天買多少塊毛巾、每天多少塊毛巾進行a種消毒和多少毛巾進行b種消毒,使公司在這項n天的軟體開發中,提供毛巾服務的總費用最低。

第1行為n,a,b,f,fa,fb. 第2行為n1,n2,……,nn. (注:1≤f,fa,fb≤60,1≤n≤1000)

最少費用

4 1 2 3 2 1

8 2 1 6

38

BZOJ 1221 軟體開發 費用流

容易看出這是顯然的費用流模型。把每天需要的餐巾數作為限制。需要將天數拆點,x 表示每天需要的餐巾,x 表示每天用完的餐巾。所以加邊 s,x inf,0 x t,inf,0 餐巾可以新買。所以需要加邊 s,x inf,f 沒用完餐巾可以留到下一天,所以加邊 x x 1 inf,0 送往快洗店,加邊 x...

BZOJ1221 HNOI2001 軟體開發

某軟體公司正在規劃一項n天的軟體開發計畫,根據開發計畫第i天需要ni個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很多的服務,其中一項服務就是要為每個開發人員每天提供一塊消毒毛巾,這種消毒毛巾使用一天後必須再做消毒處理後才能使用。消毒方式有兩種,a種方式的消毒需要a天時間,b種方式...

bzoj1221 HNOI2001 軟體開發

time limit 10 sec memory limit 162 mb submit 1351 solved 748 submit status discuss 某軟體公司正在規劃一項n天的軟體開發計畫,根據開發計畫第i天需要ni個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很...