![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 78
bubbleoooooo
这个作者很懒,什么都没留下…
展开
-
网络流_hdu3338Kakuro Extension (神奇最大流 Dinic)
题意: 给一个表格的横纵和,用1~9去填,数字可重复,求一种解决方案。 建图思路: 从空白格任取一个数,假定这个数所在为i行j列。则这个数的数值既被包括在行之和中,也被包括在列之中。那么我们可以采用行进列出的思想。从原点连向行之和节点,从列之和节点连向汇点。 中间就通过任意的空白格节点将行之和与列之和连接起来。题目要求是原创 2015-02-04 15:23:39 · 632 阅读 · 0 评论 -
hdu 4307 Matrix( 公式化最小割)
公式1: 公式2: // 膜拜网上的大牛们。。。orz //首先,最小割解决的问题可以转换成的公式(1)(最小割即为求f的最小值) //xi可以取0,1且只能选其中的一个,所以可以考虑用最小割。 //其次只考虑一个元素xi时,xi=0,可以获得ai的收益,xi=1时,可以获得bi的收益, //考虑两个元素xi,xj,xi=1,xj=1时,可以获得ci的收益。原创 2015-07-19 12:55:25 · 456 阅读 · 0 评论 -
网络流最大流sap算法模板
#include #include using namespace std; const int M=500000,N=60000; const int INF = 0x3fffffff; struct Edge{ int from,to,cap,next; }; int n,m;//总的点数,包括源点和汇点 Edge edge[M]; int q[N]; int head[N],dep[原创 2015-07-18 13:51:29 · 440 阅读 · 0 评论 -
hdu3280 Golden Eggs(网络流最小割)
这题难点在于建图。参考了网上大牛的建图,膜拜下orz 首先这类题,分成两个集合A,B 集合内部的点都是不相交的。 然后对于每一个点,有三种选择,金,银,无。 每一个格拆为两个点,金和银,之间为正无穷,因为金银只能选一种。 对于A集合 为源-金-银-汇 对于B集合 为源-银-金-汇。 A、B集合之间为相邻的点连权值对应的边。 最小割割去的都是不要的,所以答案为Sum-最小割。 这个原创 2015-07-18 13:54:36 · 348 阅读 · 0 评论 -
hdu 3667 Transportation(最小费用最大流 拆边)
需要注意的就是费用为a*x^2,这里的1 所以一条边可以拆成x条流量为1的边。 增加一条边花费为(2*x-1). 附上代码喵: #include #include #include #include using namespace std; const int maxn=105; const int maxm=100010; #define INF 1000000000 #defi原创 2015-03-25 11:03:06 · 405 阅读 · 0 评论 -
hdu 3998 Sequence(最大流+dp)
题意:给定一个序列,求此序列的最大上升子序列的长度,以及在此长度下不相交的序列条数。 首先直接dp出最长上升子序列的长度。 对于不相交的序列而言,可以考虑用拆点的最大流。 通过dp数组来建图。 首先拆点,一个点拆成左边和右边,中间流量为1,保证这个点只用1次。 考虑序列的开始一定是dp[i]==1的,所以对于这类点,我们从源点到点左边连一条流量为1的边。 然后考虑序列结束,原创 2015-03-24 20:28:56 · 392 阅读 · 0 评论 -
网络流题目总结
网络流总结 最大流 hdu 1532 DrainageDitches模板题 poj 2112 OptimalMilking 给定一张图,有K个机器,C头奶牛。求使距离机器最远的奶牛最小距离。 先二分距离,然后去掉大于距离的边建图,判断是否满流。 sgu-perspective 告诉你同分区每支球队的当前得分和剩余比赛场数,以及各支球队之间剩余的比赛场数,然你判断本队(编号为1)原创 2015-03-10 22:05:34 · 469 阅读 · 0 评论 -
最小费用最大流模板
#include #include using namespace std; #include #define MIN(a,b) a<b?a:b #define INF 1000000000 #define oo 1000000 int N,M,K,cnt; int src,des; #define maxn 1000000 #define maxm 222 struct node {原创 2015-03-02 10:15:30 · 332 阅读 · 0 评论 -
网络流最大流之Dinic算法模板
bool bfs(int x) { memset(mark,-1,sizeof(mark)); mark[x]=1; int que[maxn]; int front=0,rear=0; que[rear++]=x; while(front!=rear) { int k=que[front++];front%=maxn; for(int i=head[k];i!=-1;i=e原创 2014-08-08 09:42:54 · 612 阅读 · 0 评论 -
网络流_hdu3605 Escape 最大流 + 状压缩图
题意: 给n个人,m个星球。每个人可以去特定的几个星球,每个星球有特定的容量。问是否m个星球可以装下n个人? 起初直接构图,10万个点,边数也在10^6的数量级。直接就TLE了。 想想星球只有10个,每个人对应可去星球的状态只有2^10 。那么10万个人中肯定大部分人的状态都是重复的。那么我们可以把这些状态相同的人合并成一个点。 那么整张图的点最多只有2+2^10+10个。不同原创 2015-02-04 20:47:06 · 418 阅读 · 0 评论 -
hdu 5294 Tricks Device(15多校第一场1007)(spfa+最小割)
//最小割+spfa #include #include #include using namespace std; typedef long long LL; #define MIN(a,b) a<b?a:b #define MAX(a,b) a>b?a:b const int N=50000,M=500000,INF=0x3fffffff; int n,m; struct EDGE{原创 2015-07-22 19:37:03 · 356 阅读 · 0 评论