BZOJ1221: [HNOI2001] 軟體開發

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   os   io   

1221: [HNOI2001] 軟體開發Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 503  Solved: 265
[Submit][Status]Description

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

Input

第1行為n,a,b,f,fA,fB. 第2行為n1,n2,……,nn. (註:1≤f,fA,fB≤60,1≤n≤1000)

Output

最少費用

Sample Input4 1 2 3 2 1
8 2 1 6
Sample Output 38
HINT Source

最小費用最大流

題解:我想說這題與餐巾計劃有區別嗎?。。。題目坑爹,也沒說可以留到下一天洗,害我WA一次代碼:
  1 const inf=maxlongint;  2 type node=record  3      from,go,next,v,c:longint;  4      end;  5 var e:array[0..2000000] of node;  6     pre,head,q,d:array[0..1000000] of longint;  7     v:array[0..1000000] of boolean;  8     i,j,n,m,maxf,s,t,l,r,mincost,tot,a,b,fa,fb,f,x:longint;  9 function min(x,y:longint):longint; 10  begin 11  if x<y then exit(x) else exit(y); 12  end; 13 procedure ins(x,y,z,w:longint); 14  begin 15  inc(tot); 16  with e[tot] do 17   begin 18   from:=x;go:=y;v:=z;c:=w;next:=head[x];head[x]:=tot; 19   end; 20  end; 21 procedure insert(x,y,z,w:longint); 22  begin 23  ins(x,y,z,w);ins(y,x,0,-w); 24  end; 25 function spfa:boolean; 26  var i,x,y:longint; 27  begin 28  fillchar(v,sizeof(v),false); 29  for i:=s to t do d[i]:=inf; 30  l:=0;r:=1;q[1]:=s;d[s]:=0;v[s]:=true; 31  while l<r do 32   begin 33   inc(l); 34   x:=q[l];v[x]:=false; 35   i:=head[x]; 36   while i<>0 do 37    begin 38    y:=e[i].go; 39    if (e[i].v<>0) and (d[x]+e[i].c<d[y]) then 40     begin 41     d[y]:=d[x]+e[i].c; 42     pre[y]:=i; 43     if not(v[y]) then 44      begin 45      v[y]:=true; 46      inc(r); 47      q[r]:=y; 48      end; 49     end; 50    i:=e[i].next; 51   end; 52  end; 53  exit(d[t]<>inf); 54  end; 55 procedure mcf; 56  var i,tmp:longint; 57  begin 58  mincost:=0; 59  while spfa do 60   begin 61   tmp:=inf; 62   i:=pre[t]; 63   while i<>0 do 64    begin 65    tmp:=min(tmp,e[i].v); 66    i:=pre[e[i].from]; 67    end; 68   inc(mincost,tmp*d[t]); 69   i:=pre[t]; 70   while i<>0 do 71    begin 72    dec(e[i].v,tmp); 73    inc(e[i xor 1].v,tmp); 74    i:=pre[e[i].from]; 75    end; 76   end; 77  end; 78 procedure init; 79  begin 80  tot:=1; 81  readln(n,a,b,f,fa,fb); 82  s:=0;t:=2*n+1; 83  for i:=1 to n do 84   begin 85   read(x); 86   insert(i+n,t,x,0); 87   insert(s,i,x,0); 88   insert(s,i+n,x,f); 89   if i+1<=n then insert(i,i+1,inf,0); 90   if i+a+1<=n then insert(i,i+a+n+1,inf,fa); 91   if i+b+1<=n then insert(i,i+b+n+1,inf,fb); 92   end; 93  94  end; 95 procedure main; 96  begin 97  mincost:=0; 98  mcf; 99  writeln(mincost);100  end;101 begin102  assign(input,‘input.txt‘);assign(output,‘output.txt‘);103  reset(input);rewrite(output);104  init;105  main;106  close(input);close(output);107 end.  
View Code

 

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.