网络流与线性规划24题中的餐巾计划吧
明显要拆点吧,把每一天拆成2个点,i,i+n
起点   终点    容量    费用
 s      i      inf      c    每天都可以购买新毛巾
 i      t      ni       0    每天的需求
 s      i+n    ni       0    每天可能被洗的餐巾
i+n    i+n+1   inf      0    当前所有待洗的餐巾都可以等到下一天在洗(某种意义上相当于提前洗好了存起来)
i+n    i+a+1   inf     ca    快速清洗a天后可用(注意这里使用的那天不洗,所以是第i+a+1天可以投入使用)
i+n    i+b+1   inf     cb    同理

 const inf=;
type node=record
next,point,flow,cost:longint;
end; var edge:array[..] of node;
pre,p,d,cur:array[..] of longint;
q:array[..] of longint;
v:array[..] of boolean;
x,ans,len,fm,sm,fw,sw,c,n,i,w,t:longint; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure add(x,y,f,w:longint);
begin
inc(len);
edge[len].point:=y;
edge[len].flow:=f;
edge[len].cost:=w;
edge[len].next:=p[x];
p[x]:=len;
end; function spfa:boolean;
var f,r,i,x,y:longint;
begin
f:=;
r:=;
q[]:=;
fillchar(v,sizeof(v),false);
v[]:=true;
for i:= to t do
d[i]:=inf;
d[]:=;
while f<=r do
begin
x:=q[f];
v[x]:=false;
i:=p[x];
while i<>- do
begin
y:=edge[i].point;
if edge[i].flow> then
if d[y]>d[x]+edge[i].cost then
begin
d[y]:=d[x]+edge[i].cost;
cur[y]:=i;
pre[y]:=x;
if not v[y] then
begin
v[y]:=true;
inc(r);
q[r]:=y;
end;
end;
i:=edge[i].next;
end;
inc(f);
end;
if d[t]=inf then exit(false) else exit(true);
end; procedure mincost;
var neck,i,j:longint;
begin
while spfa do
begin
i:=t;
neck:=inf;
while i<> do
begin
j:=cur[i];
neck:=min(edge[j].flow,neck);
i:=pre[i];
end;
i:=t;
while i<> do
begin
j:=cur[i];
dec(edge[j].flow,neck);
inc(edge[j xor ].flow,neck);
i:=pre[i];
end;
ans:=ans+neck*d[t];
end;
end; begin
readln(n,fm,sm,c,fw,sw);
len:=-;
fillchar(p,sizeof(p),);
t:=*n+;
for i:= to n do
begin
read(x);
add(i,t,x,);
add(t,i,,);
add(,i,inf,c);
add(i,,,-c);
add(,i+n,x,);
add(n+i,,,);
end;
for i:= to n do
begin
w:=i+fm+;
if w<=n then
begin
add(i+n,w,inf,fw);
add(w,i+n,,-fw);
end;
w:=i+sm+;
if w<=n then
begin
add(i+n,w,inf,sw);
add(w,i+n,,-sw);
end;
if i+<=n then
begin
add(i+n,i+n+,inf,);
add(i+n+,i+n,,);
end;
end;
mincost;
writeln(ans);
end.

bzoj1221的更多相关文章

  1. bzoj1221: [HNOI2001] 软件开发

    挖坑.我的那种建图方式应该也是合理的.然后连样例都过不了.果断意识到应该为神奇建图法... #include<cstdio> #include<cstring> #includ ...

  2. 【网络流】【BZOJ1221】【HNOI2001】软件开发

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1221 题意:你有3种方法进行对毛巾的处理,不同的处理方法有不同的cost,问你要如何规划才 ...

  3. BZOJ1221 [HNOI2001]软件开发 - 费用流

    题解 非常显然的费用流. 但是建图还是需要思考的QuQ 将每天分成两个节点 $x_{i,1}, x_{i,2} $, $ x_{i,1}$用于提供服务, $x_{i ,2}$ 用来从源点获得$nd[i ...

  4. 【BZOJ1221】【HNOI2001】软件开发 [费用流]

    软件开发 Time Limit: 10 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Description 某软件公司正在规划一项n天的软件开 ...

  5. 【费用流】bzoj1221 [HNOI2001] 软件开发

    几乎为“线性规划与网络流24题”中的餐巾问题. 这里把S看成毛巾的来源,T看成软件公司,我们的目的就是让每天的毛巾满足要求(边满流). 引用题解: [问题分析] 网络优化问题,用最小费用最大流解决. ...

  6. bzoj1221软件开发 费用流

    题目传送门 思路: 网络流拆点有的是“过程拆点”,有的是“状态拆点”,这道题应该就属于状态拆点. 每个点分需要用的,用完的. 对于需要用的,这些毛巾来自新买的和用过的毛巾进行消毒的,流向终点. 对于用 ...

  7. 【bzoj1221】[HNOI2001] 软件开发 费用流

    题目描述 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消 ...

  8. BZOJ-1221 软件开发

    这题是基于一道经典的费用流模型. 将每天拆成两个点i和j,新增源和汇并建立六种边: 1.从源出发到每个i点,flow为+∞,cost为每条新餐巾的价值,表示这一天所使用的餐巾中来自购买的餐巾 2.从源 ...

  9. BZOJ1221 [HNOI2001] 软件开发 【费用流】

    题目 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛 ...

随机推荐

  1. VS 2015 update2 装xamarin后,编辑axml文件无智能提示的解决方法。

    1.从github网上下载xsd文件.地址:https://github.com/atsushieno/monodroid-schema-gen: 2.如果你是以ie或edge浏览器下载的,一定要又键 ...

  2. c# 的导入功能SqlBulkCopy

    private static void DataTableToSQLServer( DataTable dt) { string connectionString = GetConnectionStr ...

  3. 点击其它地方隐藏div/事件冒泡/sweet-alert阻止冒泡

    点击document时把div隐藏,但点击div时阻止点击事件冒泡到document,从而实现“点击文档其它地方隐藏div,点击div本身不隐藏”.js代码如下:$("#div") ...

  4. 快速打出System.out.println("");

    sysout---->Alt+/--->System.out.println():

  5. Adding Validation to our Album Forms 添加类属性的一些验证特性

    Adding Validation to our Album Forms We’ll use the following Data Annotation attributes: Required – ...

  6. 如何在安卓/data(而不是/data/data)目录下进行文件的读写操作

    分析:Android默认是无法直接操作/data目录的,只能读写程序自己的私有目录,也就是/data/data/package name/下,默认只能操作这个目录下的文件,也就是我们想直接读写/dat ...

  7. LaTeX 中插入数学公式

    一.常用的数学符号 1.小写希腊字母 \alpha \nu \beta \xi \gamma o \delta \pi \epsilon \rho \zeta \sigma \eta \tau \th ...

  8. 图论——读书笔记(基于BFS广度优先算法的广度优先树)

    广度优先树 对于一个图G=(V,E)在跑过BFS算法的过程中会创建一棵广度优先树. 形式化一点的表示该广度 优先树的形成过程是这样的: 对于图G=(V,E)是有向图或是无向图, 和图中的源结点s, 我 ...

  9. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...

  10. 06MySQL数据库入门

    1.数据库的概念 数据库是保存数据的仓库,可以方便的把数据放进去,并且把数据根据各种需求取出来. 数据库管理系统(Database Management System,DBMS)是对数据库进行管理(增 ...