poj1149
非常好的网络流
每个顾客分别用一个结点来表示。
对于每个猪圈的第一个顾客,从源点向他连一条边,容量就是该猪圈里的猪的初始数量
对于每个猪圈,假设有n个顾客打开过它,则对所有整数i∈[1, n),从该猪圈的第i个顾客向第i + 1个顾客连一条边,容量为无穷。
从各个顾客到汇点各有一条边,容量是各个顾客能买的数量上限。
其实很好理解
const inf=;
type node=record
from,point,flow,next:longint;
end;
var p,s,w,h,numh,cur,pre:array[..] of longint;
v:array[..] of boolean;
a:array[..,..] of longint;
edge:array[..] of node;
ans,z,len,t,i,j,k,x,y,n,m:longint; procedure add(x,y,f:longint);
begin
inc(len);
edge[len].from:=x;
edge[len].point:=y;
edge[len].flow:=f;
edge[len].next:=p[x];
p[x]:=len;
end; procedure sap;
var q,u,i,j,flow,neck,tmp:longint;
begin
fillchar(numh,sizeof(numh),);
fillchar(h,sizeof(h),);
fillchar(pre,sizeof(pre),);
numh[]:=t+;
u:=;
while h[]<t+ do
begin
if u=t then
begin
neck:=;
flow:=inf;
i:=;
j:=cur[i];
while i<>t do
begin
if flow>edge[j].flow then
begin
flow:=edge[j].flow;
neck:=i;
end;
i:=edge[j].point;
j:=cur[i];
end;
i:=;
j:=cur[i];
while i<>t do
begin
dec(edge[j].flow,flow);
inc(edge[j xor ].flow,flow);
i:=edge[j].point;
j:=cur[i];
end;
ans:=ans+flow;
u:=neck;
end;
q:=-;
i:=p[u];
while i<>- do
begin
x:=edge[i].point;
if (edge[i].flow>) and (h[u]=h[x]+) then
begin
q:=i;
break;
end;
i:=edge[i].next;
end;
if q<>- then
begin
cur[u]:=q;
pre[x]:=u;
u:=x;
end
else begin
dec(numh[h[u]]);
if numh[h[u]]= then break;
tmp:=t+;
i:=p[u];
while i<>- do
begin
x:=edge[i].point;
if (edge[i].flow>) then tmp:=min(tmp,h[x]);
i:=edge[i].next;
end;
h[u]:=tmp+;
inc(numh[h[u]]);
if u<> then u:=pre[u];
end;
end;
end; begin
readln(m,n);
fillchar(p,sizeof(p),);
len:=-;
t:=n+;
for i:= to m do
read(w[i]);
for i:= to n do
begin
read(y);
z:=;
for j:= to y do
begin
read(x);
if v[x]=false then
begin
v[x]:=true;
z:=z+w[x]; //如果多条边连接源点和顾客,那么合并
end;
inc(s[x]);
a[x,s[x]]:=i;
end;
if z<> then
begin
add(,i,z);
add(i,,);
end;
readln(x);
add(i,t,x);
add(t,i,);
end;
for i:= to m do
for j:= to s[i]- do
for k:=j+ to s[i] do
begin
add(a[i,j],a[i,k],inf);
add(a[i,k],a[i,j],);
end;
sap;
writeln(ans);
end.
poj1149的更多相关文章
- POJ1149 PIGS
想了好久啊...(#-.-) 开始想到m*n个点的构图,明显超时,于是考虑压缩节点个数 我们发现每个猪圈最后被有且只有一个人调整,于是想到对于一个人,连接他能调整的每个猪圈的上一个控制人.(不懂可以开 ...
- POJ-1149 PIGS---最大流+建图
题目链接: https://vjudge.net/problem/POJ-1149 题目大意: M个猪圈,N个顾客,每个顾客有一些的猪圈的钥匙,只能购买这些有钥匙的猪圈里的猪,而且要买一定数量的猪,每 ...
- [BZOJ1280][POJ1149]Emmy卖猪pigs
[BZOJ1280][POJ1149]Emmy卖猪pigs 试题描述 Emmy在一个养猪场工作.这个养猪场有 \(M\) 个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位 ...
- POJ1149 PIGS 【最大流 + 构图】
题目链接:http://poj.org/problem?id=1149 PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- POJ1149 PIGS [最大流 建图]
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20662 Accepted: 9435 Description ...
- POJ1149 PIGS (网络流)
PIGS Time Limit: 1000MS M ...
- POJ1149 PIGS 【最大流量】
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16555 Accepted: 7416 Description ...
- poj1149构图题
引题解: 这道题目的大意是这样的:⦁ 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪.⦁ 一开始所有猪圈都是关闭的.⦁ 依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定 ...
- POJ1149(最大流)
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21678 Accepted: 9911 Description ...
随机推荐
- 6个好用的Web开发工具
在过去的几年间,涌现出了很多Web开发工具,它们大多还是比较吸引人的,方便了我们的工作.我们可以学习一下这些新东西,短时间就可以拓宽思路(PHP100推荐:学习10分钟,改变你的程序员生涯).这些应用 ...
- phonegap + 推送 + 页面跳转 (ios)
os如果没有页面跳转的需求的话就使用极光推送,如果有页面跳转如果用了极光推送就只有用oc去写,但是我不会oc,所以智能放弃极光选用ios自己的apns来实现 新建项目跟安卓创建项目差不多,新建完成后就 ...
- call callb callp区别
对于刚刚接触ILE模式开发的初级菜鸟而言,想要搞清楚这三者的区别还是有点难度的.网上虽然一些帖子对这三者进行了比较,但是这些帖子或是语焉不详,或是高度概括.对于老鸟来说或许已经足矣,但是对于初级菜鸟而 ...
- oracle linux了解基本命令行
1. Linux的版本:核心(kernel)版本和发行(distribution)版本 2. 复制.删除和移动文件的命令 cp [选项] 源文件或目录 目标文件或目录 -R,-r ...
- MyEclipse 8.5配置Tomcat7.0
MyEclipse 8.5配置默认没有Tomcat7.0, 如果想使用怎么办.? window>>Preferences>>MyEclipse Enterprise Workb ...
- 分布式日志收集系统--Chukwa
1. 安装部署 1.1 环境要求 1.使用的JDK的版本必须是1.6或者更高版本,本实例中使用的是JDK1.6 2.使用的hadoop的版本必须是Hadoop0.20.205.1及以上版本,本实例中使 ...
- MBProgressHUD ---
1,MBProgressHUD常用属性和用法Demo - (void)testMBProgressHUD { NSLog(@"test MBProgressHUD "); /* 要 ...
- VC++创建、调用dll的方法步骤
文章来源:http://www.cnblogs.com/houkai/archive/2013/06/05/3119513.html 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有 ...
- CQRS学习——Cqrs补丁,async实验以及实现[其二]
实验——async什么时候提高吞吐 async是一个语法糖,用来简化异步编程,主要是让异步编程在书写上接近于同步编程.总的来收,在await的时候,相当于附加上了一个.ContinueWith(). ...
- 你不需要jQuery(四)
jQuery是个好东西.它诞生于IE6在互联网称霸的那个时代.jQuery的存在让我们的代码能很好的兼容各种平台. 然而,到如今,浏览器技术已经取得了巨大的进步.我们可以自由的使用所有最新众多ES5/ ...