BZOJ 1221 軟體開發 費用流

2022-05-27 01:03:07 字數 2170 閱讀 7575

容易看出這是顯然的費用流模型。

把每天需要的餐巾數作為限制。需要將天數拆點,x』表示每天需要的餐巾,x』』表示每天用完的餐巾。所以加邊 (s,x',inf,0),(x'',t,inf,0).

餐巾可以新買。所以需要加邊(s,x'',inf,f)。

沒用完餐巾可以留到下一天,所以加邊(x',x+1',inf,0).

送往快洗店,加邊(x',x+a+1'',inf,fa). 送往慢洗店,加邊(x',x+b+1'',inf,fb).

跑一遍費用流即可。由於該圖是一種特殊的結構,類二分圖結構。用zkw費用流可以快速出解。

# include # include 

# include

# include

# include

# include

# include

# include

# include

# include

# include

using

namespace

std;

# define lowbit(x) ((x)&(-x))

# define pi

3.1415926535

# define eps 1e-9

# define mod

100000007

# define inf

1000000000

# define mem(a,b) memset(a,b,

sizeof

(a))

# define for(i,a,n)

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

# define fo(i,a,n)

for(int i=a; ii)

# define bug puts("h

");# define lch p

<<1

,l,mid

# define rch p

<<1|1,mid+1

,r# define mp make_pair

# define pb push_back

typedef pair

pii;

typedef vector

vi;# pragma comment(linker,

"/stack:1024000000,1024000000")

typedef

long

long

ll;int

scan()

void out(int

a)

if(a>=10) out(a/10

); putchar(a%10+'0'

);}const

int n=2005;//

code begin...

struct

edge

}edge[

50005

];struct

zkw_mincostmaxflow

void addedge(int u, int v, int cap, int

cost)

int aug(int u, int

flow)

}return0;

}bool

modify_label()

if (d==inf) return

false

; fo(i,

0,n) if (vis[i]) vis[i]=false, dis[i]+=d;

return

true

; }

pii mincostmaxflow(

int start, int end, int

nn)

if (!modify_label()) break

; }

return

mp(min_cost,max_flow);

}}solve;

intval[n];

intmain ()

printf(

"%d\n

",solve.mincostmaxflow(0,2*n+1,2*n+2

).first);

return0;

}

view code

bzoj1221軟體開發 費用流

題目傳送門 思路 網路流拆點有的是 過程拆點 有的是 狀態拆點 這道題應該就屬於狀態拆點。每個點分需要用的,用完的。對於需要用的,這些毛巾來自新買的和用過的毛巾進行消毒的,流向終點。對於用完的,來自源點,可以用於消毒,連向需要用的點,還有一些毛巾留到明天消毒 其實意思是,消完毒,延後使用,但是這樣建...

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個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很...