网络流 HDU 3605
建图 源点 -> 1024类人 -> 星球 -> 汇点
权 每类人数目 星球容量 星球容量
列举 0~1024 一位是1 那么和对应的星球建边
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<math.h> using namespace std;
#define inf 100000000
int z[];
int vis[];
int head[];
int y[];
int cnt,S,T;
struct edg
{
int w,next,to; }x[];
void add(int u,int v,int w)
{
x[cnt].next=head[u];
x[cnt].to=v;
x[cnt].w=w;
head[u]=cnt++;
}
int bfs()
{
memset(vis,-,sizeof(vis));
queue<int>q1;
q1.push(S);
vis[S]=;
int j; while(!q1.empty())
{
int now=q1.front();
q1.pop();
for(j=head[now];j!=-;j=x[j].next)
{
if(vis[x[j].to]<&&x[j].w)
{ vis[x[j].to]=vis[now]+;
q1.push(x[j].to);
}
}
}
return vis[T]!=-;
}
int dfs(int u,int w)
{
int ans=; if(u==T)
return w;
int j;
for(j=head[u];j!=-;j=x[j].next)
{
if(vis[x[j].to]==vis[u]+&&x[j].w)
{ int b=dfs(x[j].to,min(w-ans,x[j].w));
ans=ans+b;
x[j].w-=b;
x[j^].w+=b;
}
}
return ans;
}
int main()
{
int n,m; while(scanf("%d%d",&n,&m)!=EOF)
{
int i,j;
memset(z,,sizeof(z)); for(i=;i<=n;i++)
{
int b=; for(j=;j<=m;j++)
{
int a;
scanf("%d",&a);
if(a==)b=b+(<<(j-));
}
z[b]++;
}
for(i=;i<=m;i++)
scanf("%d",&y[i]);
S=;
T=; //这2个点只要没用过就行
cnt=;
memset(head,-,sizeof(head));
for(i=;i<=;i++)
{
if(z[i])
{
add(S,i,z[i]);
add(i,S,);
}
} //0 1024 人的下标 1025 1035 星球下标
for(i=;i<=;i++)
{
if(z[i])
{
for(j=;j<=m;j++)
{
if(<<(j-)&i)
{
add(i,+j,y[j]);
add(+j,i,);
}
}
}
} for(j=;j<=m;j++)
{
add(+j,T,y[j]);
add(T,+j,);
} int ans=;
while(bfs())
ans+=dfs(S,inf);
if(ans>=n)
printf("YES\n");
else
printf("NO\n");
} return ;
}
网络流 HDU 3605的更多相关文章
- HDU 3605 Escape (网络流,最大流,位运算压缩)
HDU 3605 Escape (网络流,最大流,位运算压缩) Description 2012 If this is the end of the world how to do? I do not ...
- Hdu 3605 Escape (最大流 + 缩点)
题目链接: Hdu 3605 Escape 题目描述: 有n个人要迁移到m个星球,每个星球有最大容量,每个人有喜欢的星球,问是否所有的人都能迁移成功? 解题思路: 正常情况下建图,不会爆内存,但是T ...
- HDU 3605 Escape(状压+最大流)
Escape Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- 网络流 HDU 3549 Flow Problem
网络流 HDU 3549 Flow Problem 题目:pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549 用增广路算法 ...
- 网络流 E - Escape HDU - 3605
2012 If this is the end of the world how to do? I do not know how. But now scientists have found tha ...
- HDU 3605:Escape(最大流+状态压缩)
http://acm.hdu.edu.cn/showproblem.php?pid=3605 题意:有n个人要去到m个星球上,这n个人每个人对m个星球有一个选择,即愿不愿意去,"Y" ...
- HDU(3605),二分图多重匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3605 Escape Time Limit: 4000/2000 MS (Java/Others) ...
- HDU 3605
http://acm.hdu.edu.cn/showproblem.php?pid=3605 用最大流做的,G++超时,C++可以过,看别人写的叫二分图多重匹配,还不会这玩意一会学学 显然的最大流模型 ...
- HDU 3605 Escape(状态压缩+最大流)
http://acm.hdu.edu.cn/showproblem.php?pid=3605 题意: 有n个人和m个星球,每个人可以去某些星球和不可以去某些星球,并且每个星球有最大居住人数,判断是否所 ...
随机推荐
- import
避免类名混淆: 区分有包名的类,如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名,如引入了tom.jiafei包中的AA类和sun.com包中的AA类,那么程序在使用AA类时必须 ...
- 第26章 创建型模式大PK
26.1 工厂方法模式 VS 建造者模式 26.1.1 按工厂方法建造超人 (1)产品:两类超人,成年超人和未成年超人. (2)工厂:这里选择简单工厂 [编程实验]工厂方法建造超人 //创建型模式大P ...
- 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则
在.NET 4.0下使用最新版本的log4Net 1.2.10,会遇到下面这样的错误: 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObject ...
- 解决Apache/PHP无法启动的问题
最近经常被问到Apache无法启动的情况,所以写一篇文章,总结一下Windows下经常遇到的 Apache/PHP 无法启动的情况的解决方法. Apache/PHP 无法启动分两种情况: 1..Apa ...
- IOS第四课——Autolayout_View
这节课,我们要学习MVC.Selector.Access Control.Extension.Auto Layout.Delegate-Protocol.Custom View. Auto Layou ...
- linux下截取给定路径中的目录部分
在日常运维中,有时会要求截取一个路径中的目录部分.截取目录的方法,有以下两种:1)dirname命令(最常用的方法):用于取给定路径的目录部分.很少直接在shell命令行中使用,一般把它用在shell ...
- Centos5.8下编译安装PHP5.4和memcached, phalcon, yaf, apc
安装GIT 需要先安装gcc-c++ (sudo yum install gcc-c++)sudo yum install gettext-devel expat-devel cpio perl op ...
- poj1190
生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18230 Accepted: 6491 Description 7月1 ...
- 036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层
这篇文章我们来讲Action层: 我们先讲开发步骤: 1:我们要根据Service层里面要传的参数,在Action层传入对应的参数. Service层是:public void insertGysym ...
- 产品经理技能之BRD的笔记之菜鸟入门
链接:http://www.woshipm.com/pmd/178527.html?utm_source=tuicool 要学习MRD.PRD,先从BRD开始,才能做到知其然知其所以然. BRD是什么 ...