题意:

度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题:

喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区。

由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但是最多生产b[i]个。

同样的,由于每个片区的购买能力的区别,第i个片区也能够以c[i]的价格出售最多d[i]个物品。

由于这些因素,度度熊觉得只有合理的调动物品,才能获得最大的利益。

据测算,每一个商品运输1公里,将会花费1元。

那么喵哈哈村最多能够实现多少盈利呢?

1<=n<=500,
1<=m<=1000,
1<=a[i],b[i],c[i],d[i],k[i]<=1000,
1<=u[i],v[i]<=n

思路:明显的一个最小费用流模型 写的是最大费用流,注意没有要求流量最大

刚开始TooNaive先跑了一波最短路然后建的图

而后发现直接照原图建边,费用流过程中就会自动调整到最短路上

还是要学习一个

SPFA找的时候如果当前继续跑流会使利润减小就停止,即dis[src]<0

 const inf=;
var q:array[..]of longint;
f:array[..,..]of longint;
a,b,c,d,dis:array[..]of longint;
head,vet,len1,len2,next:array[..]of longint;
pre:array[..,..]of longint;
inq:array[..]of boolean;
fan:array[..]of longint;
n,m,i,tot,t1,s,source,src,x,y,z,j:longint;
ans1,ans2:int64; procedure add(a,b,c,d:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
len1[tot]:=c;
len2[tot]:=d;
head[a]:=tot;
end; function min(x,y:int64):int64;
begin
if x<y then min:=x
else min:=y;
end; function spfa:boolean;
var u,e,v,t,w,i:longint;
begin
for i:= to s do
begin
dis[i]:=-(maxlongint>>);
inq[i]:=false;
end;
t:=; w:=; q[]:=source; dis[source]:=; inq[source]:=true;
while t<w do
begin
inc(t); u:=q[t mod ]; inq[u]:=false;
e:=head[u];
while e<> do
begin
v:=vet[e];
if (len1[e]>)and(dis[u]+len2[e]>dis[v]) then
begin
dis[v]:=dis[u]+len2[e];
pre[v,]:=u;
pre[v,]:=e;
if not inq[v] then
begin
inc(w); q[w mod ]:=v; inq[v]:=true;
end;
end;
e:=next[e];
end;
end;
//if dis[src]=-(maxlongint>>) then spfa:=false
// else spfa:=true;
if dis[src]< then spfa:=false
else spfa:=true;
end; procedure mcf;
var k,e:longint;
t:int64;
begin
k:=src; t:=<<;
while k<>source do
begin
t:=min(t,len1[pre[k,]]);
k:=pre[k,];
end;
k:=src;
while k<>source do
begin
e:=pre[k,];
len1[e]:=len1[e]-t;
len1[fan[e]]:=len1[fan[e]]+t;
ans2:=ans2+t*len2[e];
k:=pre[k,];
end;
end; begin
assign(input,'1005.in'); reset(input);
assign(output,'1005.out'); rewrite(output);
for i:= to do
if i and = then fan[i]:=i+
else fan[i]:=i-;
while not eof do
begin
read(n,m);
tot:=;
if (n=)and(m=) then break;
for i:= to n do read(a[i],b[i],c[i],d[i]);
tot:=;
for i:= to n do head[i]:=;
source:=n+; src:=n+; s:=n+;
for i:= to n do
begin
add(source,i,b[i],-a[i]);
add(i,source,,a[i]);
end;
for i:= to n do
begin
add(i,src,d[i],c[i]);
add(src,i,,-c[i]);
end; for i:= to m do
begin
read(x,y,z);
add(x,y,maxlongint,-z);
add(y,x,,z);
add(y,x,maxlongint,-z);
add(x,y,,z);
end;
ans1:=; ans2:=;
while spfa do mcf;
writeln(ans2);
for i:= to s do head[i]:=;
for i:= to s do dis[i]:=;
for i:= to s do
for j:= to do pre[i,j]:=;
end;
close(input);
close(output); end.

【HDOJ6118】度度熊的交易计划(费用流)的更多相关文章

  1. hdu 6118度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. 2017"百度之星"程序设计大赛 - 初赛(B) 度度熊的交易计划 最小费用最大流求最大费用

    /** 题目:度度熊的交易计划 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题 ...

  4. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. HDU 6118 度度熊的交易计划 (最小费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. hdu 6118 度度熊的交易计划

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. HDU 6118 度度熊的交易计划(最小费用最大流)

    Problem Description度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个 ...

  8. HDU 6118 度度熊的交易计划(网络流-最小费用最大流)

    度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...

  9. HDU 6118 度度熊的交易计划 最大费用可行流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:中文题 分析: 最小费用最大流,首先建立源点 s ,与超级汇点 t .因为生产一个商品需要 ...

随机推荐

  1. div 弹出 居中

    function show_tc_conv(){var x=jq13(window).width()/2;var y=jq13(window).height()/2; var div_w=jq13(& ...

  2. .net 环境下c# 通信

    .net环境下通信主要掌握 通信协议(UDP&TCP). 网络抓包工具().:使用方法 点对点通信,IP组播,广播通信 c#中结构体转为字节流方式 c#结构体与c++结构体转换对应关系 开源的 ...

  3. 正则表达式 - IP地址、Mac地址、端口、经纬度、车牌号码校验

    IP地址验证:   /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0 ...

  4. SQL Server调试存储过程

      一.   调试SQL   Server   2000 1.   设置帐户. <1>   在windows服务中找到MSSQLSERVER,双击弹出对话框. <2>   选择 ...

  5. PostgreSQL执行机制的初步学习

    作为开源数据库的新手,近日有兴对比了Pg和MySQL的查询计划. 通过Pg源码目录下的src\backend\executor\README文件,加上一些简单调试,就能对Pg的执行机制产生一个初步印象 ...

  6. vue2.0 v-model指令

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.

    webpack-cli没被找到: 在webpack4.0之后,需要全局安装webpack-cli, 在全局安装webpack之后,cnpm i webpack-cli -g 在局部使用webpack时 ...

  8. 第4节 hive调优:1、2、fetch抓取和表的优化

    hive的调优:第一个调优:fetch抓取,能够避免使用mr的,就尽量不要用mr,因为mr太慢了 set hive.fetch.task.conversion=more 表示我们的全局查找,字段查找, ...

  9. CSU1011: Counting Pixels

    Description Did you know that if you draw a circle that fills the screen on your 1080p high definiti ...

  10. 2018湖南省第14届大学生计算机程序设计竞赛 C: 时间旅行

    Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中. 当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个 ...