Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
1391: [Ceoi2008]order
Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 1105  Solved: 331
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
100 2
1 30
2 20
100 2
1 40
3 80
50
80
110
Sample Output
HINT

Source
题解:
最大权闭合图。
又忘了咋连边了。。。QAQ
最大权闭合图:
构造一个原点S,汇点T。S -> 权值为正的点 连一条容量为权值的边。权值为负的点 -> T 连一条容量为权值的绝对值的边。原图中的边连INF。
但本题中有可以租的机器,每一次租也要花费代价。考虑最大权闭合图中的原图的边连INF的意义:使边的两个顶点必须同时选。但这道题可以不选但要付出代价,所以将原图中的边连容量为租的花费。
注意:一定要加 当前弧优化 。。。
#include<bits/stdc++.h>
using namespace std;
#define MAXN 2520
#define INF 1e9
struct node
{
int begin,end,value,next;
}edge[];
int cnt,Head[MAXN],q[MAXN],dis[MAXN],cur[MAXN],S,T;
void addedge(int bb,int ee,int vv)
{
edge[++cnt].begin=bb;edge[cnt].end=ee;edge[cnt].value=vv;edge[cnt].next=Head[bb];Head[bb]=cnt;
}
void addedge1(int bb,int ee,int vv)
{
addedge(bb,ee,vv);addedge(ee,bb,);
}
int read()
{
int s=,fh=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')fh=-;ch=getchar();}
while(ch>=''&&ch<=''){s=s*+(ch-'');ch=getchar();}
return s*fh;
}
int BFS()
{
int head,tail,u,v,i;
head=;tail=;q[tail]=S;
memset(dis,-,sizeof(dis));dis[S]=;
while(head!=tail)
{
head++;if(head==)head=;
u=q[head];
for(i=Head[u];i!=-;i=edge[i].next)
{
v=edge[i].end;
if(edge[i].value>&&dis[v]<)
{
dis[v]=dis[u]+;
tail++;if(tail==)tail=;
q[tail]=v;
}
}
}
if(dis[T]<=)return ;
else return ;
}
int DFS(int u,int minflow)
{
int used=,ans,v,i;
if(u==T)return minflow;
for(i=cur[u];i!=-;i=edge[i].next)
{
v=edge[i].end;
if(edge[i].value>&&dis[v]==dis[u]+)
{
ans=minflow-used;
ans=DFS(v,min(ans,edge[i].value));
edge[i].value-=ans;if(edge[i].value>)cur[u]=i;
edge[i^].value+=ans;
used+=ans;
if(used==minflow)return minflow;
}
}
if(used==)dis[u]=-;
return used;
}
int Dinic()
{
int maxflow=,ans=,i;
while(BFS()){for(i=;i<=T;i++)cur[i]=Head[i];ans=DFS(S,INF);if(ans==)break;maxflow+=ans;}
return maxflow;
}
int main()
{
int ans=,n,m,s1,s2,s3,s4,s5,i,j;
n=read();m=read();
S=n+m+;T=S+;
memset(Head,-,sizeof(Head));cnt=;
for(i=;i<=n;i++)
{
s1=read();s2=read();
addedge1(S,i,s1);ans+=s1;
for(j=;j<=s2;j++)
{
s3=read();s4=read();
addedge1(i,s3+n,s4);
}
}
for(i=;i<=m;i++){s5=read();addedge1(n+i,T,s5);}
printf("%d",ans-Dinic());
return ;
}
Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图的更多相关文章
- BZOJ 1391 [Ceoi2008]order
		
1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...
 - BZOJ 1391: [Ceoi2008]order [最小割]
		
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
 - BZOJ 1497 JZYZOJ 1344 [NOI2006]最大获利 网络流 最大权闭合图
		
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 http://172.20.6.3/Problem_Show.asp?id=1344 思路 ...
 - BZOJ 4873 寿司餐厅(最大权闭合图 网络流)
		
寿司餐厅 时间限制: 1 Sec 内存限制: 512 MB提交: 6 解决: 3[提交][状态][讨论版] 题目描述 Kiana 最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序 ...
 - BZOJ 1497 最大获利(最大权闭合图)
		
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 4686 Solved: 2295 [Submit][Statu ...
 - BZOJ 1565 植物大战僵尸(最大权闭合图)
		
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1565 题意:植物大战僵尸,一个n*m的格子,每 个格子里有一个植物,每个植物有两个属性: ...
 - Bzoj 1565: [NOI2009]植物大战僵尸  最大权闭合图,拓扑排序
		
题目: http://cojs.tk/cogs/problem/problem.php?pid=410 410. [NOI2009] 植物大战僵尸 ★★★ 输入文件:pvz.in 输出文件:p ...
 - POJ 2987 Firing 网络流 最大权闭合图
		
http://poj.org/problem?id=2987 https://blog.csdn.net/u014686462/article/details/48533253 给一个闭合图,要求输出 ...
 - bzoj 1391 [Ceoi2008]order(最小割)
		
[题意] 有n个有偿工作选做,m个机器,完成一个工作需要若干个工序,完成每个工序需要一个机器,对于一个机器,在不同的工序有不同的租费,但买下来的费用只有一个.问最大获益. [思路] 对于工作和机器建点 ...
 
随机推荐
- 【BZOJ1042】【DP + 容斥】[HAOI2008]硬币购物
			
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
 - 【实习记】2014-09-26恢复linux下误删的ntfs盘中的文件
			
情景,ubuntu下把NTFS格式的盘中的“实习记”文件夹彻底删除了,追毁莫及,粗心觉不是一件好的事情. linux下回复ntfs盘下的文件不能用ext3grep,而使用debugfs命令实在 ...
 - ceph入门学习链接
			
https://tobegit3hub1.gitbooks.io/ceph_from_scratch/content/introduction/component.html
 - linux进程间通信--有名管道
			
有名管道 只有当一个库函数失败时,errno才会被设置.当函数成功运行时,errno的值不会被修改.这意味着我们不能通过测试errno的值来判断是否有错误存在.反之,只有当被调用的函数提示有错误发生时 ...
 - Jquery div边框大全
			
网址 http://jquery.malsup.com/corner/ jQuery Corner是一款jQuery的插件,最初由Dave Methvin开发,但后在Malsup同志的协助下,进行了一 ...
 - 查看文章 mysql:表注释和字段注释[转]
			
1 创建表的时候写注释 create table test1 ( field_name int comment '字段的注释' )comment='表的注释'; 2 修改表的注释 alter tabl ...
 - 64位AutoItLibrary的安装
			
安装AutoItLibrary,除了要先已经安装好Robotframework之外,先要安装一个叫pywin32的工具 第一步:pywin32的安装 pywin32的下载地址: http://sour ...
 - Winform与WPF对话框(MessageBox, Dialog)之比较
			
Winform:使用System.Windows.Forms命名空间中相应控件; WPF则调用Microsoft.Win32. MessageBox: // WinForm private void ...
 - lua方法点(.)调用和冒号(:)调用区别:
			
用.定义方法时object.func_name(arg1,arg2...),方法真正的函数签名形式为: object.func_name(arg1, arg2...) 用:定义方法时object:fu ...
 - 使用XmlDocument.SelectNodes遍历xml元素遇到的一个XPathException
			
使用XmlDocument类时候报错: 未处理的XPathException:需要命名空间管理器或 XsltContext.此查询具有前缀.变量或用户定义的函数. 需要使用XmlNamespaceMa ...