网络流
文章平均质量分 81
KIDGINBROOK
这个作者很懒,什么都没留下…
展开
-
uva 1104 chips challenge 费用流
题目大意:一个芯片可以看成由n*n的插槽组成,每个插槽有三种可能1. 必须放置一个零件2. 可以放一个零件也可以不放3. 不能放置零件要求1. 第i行的零件要和第i列的零件一样多2. 第i行的零件数不能超过总零件数的A / B (A, B为给定的)求 最多可以放的零件数 - 必须放置的零件数首先看如何满足第一个条件,假设知道了满足该条件的答案为第i行零件数为xi,那么把每行每列都...原创 2018-11-29 17:47:08 · 500 阅读 · 2 评论 -
poj 3680 Intervals 费用流
#include #include #include #include using namespace std;const int MAXN=40000;const int MAXE=20000000;const int inf=1<<30;int head[MAXN],s,t,cnt,ans;int d[MAXN],pre[MAXN];bool vis[MAXN];int原创 2014-06-08 12:08:18 · 403 阅读 · 0 评论 -
hdu 3395 Special Fish 带权匹配 费用流
#include #include #include using namespace std;const int N=1300;const int MAXE=200000;const int inf=1<<30;int head[N],s,t,cnt,n,ans;int d[N],pre[N];bool vis[N];int q[MAXE];int val[110];cha原创 2014-06-25 21:25:16 · 522 阅读 · 0 评论 -
判断一条边能不能在最小割集里
首先对原图求最大流直到没有增广路。此时,有向边(i, j)可以存在于最小割集中,当且仅当——一、(i, j)正向满流。二、在残余网络中没有从i到j的有向路,使得沿途经过的弧都是非饱和的。POJ 1815 Friendship 涉及这个引理的应用。原创 2014-06-24 23:09:48 · 1645 阅读 · 0 评论 -
poj 3204 Ikki's Story I - Road Reconstruction && zoj 2532 Internship 网络流关键边
#include #include #include using namespace std;const int maxn=1000;#define inf 1000000int n,m;int from[maxn],to[maxn];int level[maxn],que[maxn];int head[maxn],lon;int num[15000];int min(int原创 2014-06-24 11:47:58 · 455 阅读 · 0 评论 -
hdu 3987 求割边最少的最小割
题目很简单就是求最小割集 并且要是最少边数的最小割集。原创 2014-05-19 21:41:59 · 1077 阅读 · 0 评论 -
zoj 2587 Unique Attack 网络流
#include #include #include using namespace std;#define inf 10000000const int maxn=1500;int n,m;int from[maxn],to[maxn];int level[maxn],que[maxn];int head[maxn],lon;int min(int a,int b){ if原创 2014-06-24 16:36:43 · 426 阅读 · 0 评论 -
hdu 3251 Being a Hero 最小割
#include #include #include using namespace std;const int maxn=1010;#define inf 100000000int n,m,f;int level[maxn],que[maxn];int head[maxn],lon;int num[100010],ans[100010];int d1[maxn],d2[max原创 2014-05-18 22:16:35 · 426 阅读 · 0 评论 -
hdu 4322 Candy 费用流
Candy【题目大意】有N颗糖果和M个小孩,老师现在要把这N颗糖分给这M个小孩。每个小孩i对每颗糖j都有一个偏爱度Aij,如果他喜欢这颗糖,Aij = k,否则Aij = 1。小孩i觉得高兴当且仅当ΣCij×Aij >= Bi,j=1,2,…,N,若他分得了糖j,Cij = 1,否则Cij = 0。问能否合理分配这N颗糖,使得每个小孩都觉得高兴。【建模方法】(最大费用最大流)原创 2014-04-22 14:28:19 · 496 阅读 · 0 评论 -
hdu 3046 Pleasant sheep and big big wolf 网络流
原图中相邻点两两连边,容量为1,源点连接狼的节点,容量为INF,羊的节点连接汇点,容量为INF,这样求最小割就可以了。#include #include #include #include using namespace std;#define maxn 50000#define INF 100000struct Edge{ int from, to, cap, flo原创 2014-03-27 12:52:01 · 497 阅读 · 0 评论 -
hdu 3036 Escape 网络流
转载==题意:每个' . '有一个姑娘, E是出口,'.'是空地 , 'X‘ 是墙。 每秒钟每个姑娘可以走一步(上下左右) 每秒钟每个出口只能出去一个人 给定n*m的地图, 时限T 问所有姑娘能否在T秒内逃生,若能输出最小值,不能输出"impossible" 思路: 显然是二分答案+网络流判可行。 因为每个出口每秒钟只能出去一个人,那么就把每个出口按时间拆点,则T秒钟就拆成T个点。网络流建原创 2014-05-07 21:59:46 · 541 阅读 · 0 评论 -
cf 434d Nanami's Power Plant 网络流
题目大意就是有n个发电机,每个发电机有l到r个档位可供选择,每个档位的输出功率是已知的,另外还有一些限制条件,形式为xu ≤ xv + d,表示发电机u的档位要小于v的档位加d,d是一个已知的整数。求n个发电机的最大功率。假设没有最后那个限制条件,那么对于每个发电机i拆点成l-1,l。。。到r相邻两档位连边为max-f(i),f(i)是档位i的输出功率,max是一个大数,大于等于所有档位的输出原创 2014-12-15 10:36:56 · 562 阅读 · 0 评论 -
hdu 3472 HS BDC 混合欧拉 网络流
题意就是问能否将给定的几个单词全部连接起来,两个单词能连接是当前一个单词的最后一个字母等于后一个单词的首字母。还有一些单词反向也没有关系。建图,每输入一个单词,只看他的首尾字母,连接一条首字母到尾字母的有向边,如果他可以反向,那么再反向建立一条边,即该边是无向边。然后就是一个混合欧拉了。还有一个注意的地方,就是可能是欧拉道路,这时只要在添加一条边连接两个奇度节点就好。#include原创 2014-12-15 10:37:41 · 445 阅读 · 0 评论 -
hdu 3315 My Brute 费用流,费用最小且代价最小
很常见的想法了= =#include #include #include using namespace std;const int N=400;const int MAXE=200000;const int inf=1<<30;int head[N],s,t,cnt,n,m,ans;int d[N],pre[N];bool vis[N];int q[MAXE];int原创 2014-12-15 10:39:13 · 532 阅读 · 0 评论 -
hackerrank Cargo Delivery 费用流
题目链接:https://www.hackerrank.com/contests/w38/challenges/cargo-delivery题目大意:一个无向图,有 k 辆车要依次从 0 到 n-1。一开始每条边权重为 0,每经过一次车该边权重 +1。有 t 次机会使一条边边权 -1。现求无向图中最大的边权重最小化是多少。费用流,二分最优值x,两个点之间连两条边,一条边容量为二分的值x,费用为0,...原创 2018-07-11 17:41:46 · 291 阅读 · 0 评论 -
hdu 6118 度度熊的交易计划 费用流
度度熊的交易计划Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 941 Accepted Submission(s): 350Problem Description度度熊参与了喵哈哈村的商业大会,但是原创 2017-08-16 12:27:21 · 570 阅读 · 0 评论 -
gcj d题 Fashion Show 二分匹配
题目大意给定N*N的棋盘和一些士兵,士兵有三种分别为'x','+','o',如果没有士兵则用'.'表示。一个格子最多放置一个士兵,并满足以下要求1、任意两个在同一条横线或者竖线上的士兵中必须有一个'+'2、任意两个在同一条斜线上的士兵中必须有一个'x'现在可以进行的操作是:1、将已存在的士兵'x'或者'+'升级为'o'2、将任意一种士兵放在空格子上问最佳操作原创 2017-05-04 16:23:44 · 440 阅读 · 0 评论 -
cf 510E Fox And Dinner 网络流
题意:每个狐狸都有一个编号,问是否可以将狐狸分成几个桌子,使得相邻的狐狸的编号和为素数,每个桌子至少有三个。只有相邻两个狐狸一奇一偶才有可能为素数,且每一个狐狸度数为2,所以建立一个二分图,一边为偶,一边为奇,源点到偶度数容量为2,奇数到汇点容量为2,一个偶数加一个奇数为素数,则连接这两点,跑最大流,若流量为n则可以,否则不可能。#include #include #include原创 2015-02-16 18:50:14 · 492 阅读 · 0 评论 -
noi 2008 志愿者招募 费用流
https://www.byvoid.com/blog/noi-2008-employee/因为每个志愿者的服务日期都是连续的,设 xi 为第 i 种志愿者的数量,所以列出线性规划式子之后,两两相减,每个 xi 都会只在两个式子中出现,一个为正一个为负,与费用流的线性规划式一致,所以可以转化为费用流。转载 2014-12-15 10:47:25 · 415 阅读 · 0 评论 -
hdu 4888 Redraw Beautiful Drawings
题目是一个矩阵,每行每列的数字的和都有一个上限,问是否存在可行方案,并且可行方案是否唯一。第一问比较简单,行列建图,s到每个行节点容量为该行上限,每个列节点连接到t,容量为该列的上限,求最大流,如果满流则有可行方案。第二问就是判断最大流是否唯一,就是在原图中找一个环(经过一条边后不能马上走反向边),环上的边cap-flow都大于0。如果有这个环,那么不唯一,否则唯一。因为流量为k的两个流量图的原创 2014-12-15 10:45:53 · 346 阅读 · 0 评论 -
hdu 4862 Jump 上下界费用流
对于每个点拆点成为两个点a,b,连接a到b的上界为1,下界为1的边,保证用过一次且仅一次。然后若点u可到达点v,则连接即可。建成了一个上下界网络,将下界拆出去,求最大费用最大流就好。#include #include #include using namespace std;const int N=800;const int MAXE=200000;const int inf=原创 2014-12-15 10:44:22 · 388 阅读 · 0 评论 -
hdu 4309 Seikimatsu Occult Tonneru 枚举+最大流
http://blog.csdn.net/julyana_lin/article/details/8070949题意: n个点,每个点有初始的值 ,三种 通道,1、隧道:可以用来躲避,有固定的容量,也可以用来传递。2、普通的道路,可以无限的通过。3、桥(最多有12座):不花费的话能通过一人,修之后可以无限通过。问最少花费最大可以隐藏人数。解: 网络流 + 枚举官方题解:原创 2014-12-15 10:43:35 · 394 阅读 · 0 评论 -
hdu 4406 GPA 费用流
http://www.cnblogs.com/jianglangcaijin/archive/2012/10/06/2713375.html题意:有m科课程需要学习,每个课程有一个基础分数,每学习该课程一个时间单位,该课程的分数就增加1分。现在有n天的学习时间,每天有K个单位时间,并且每天可以学习的课程是固定的,给出学分绩点的计算方式,求可以达到的最高的学分绩点,要求所有课程都要及格。思路原创 2014-12-15 10:42:22 · 455 阅读 · 0 评论 -
hdu 4807 Lunch Time
转载自 http://blog.csdn.net/qq564690377/article/details/17100011题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可以很轻松的求出两个点之间的最大容量是多少,但是现在的问题就是刚开始在起步的时候那么最开始的容转载 2014-12-15 10:40:26 · 334 阅读 · 0 评论 -
hdu 3998 Sequence 网络流
题意:求一个序列最长上升子序列的长度以及有多少个最长上升子序列。#include #include #include #include using namespace std;#define maxn 10000#define INF 100000struct Edge{ int from, to, cap, flow;};int s, t;int num;i原创 2014-03-26 13:36:15 · 391 阅读 · 0 评论 -
hdu 4240 Route Redundancy 网络流
题意:在一个网络中求最大流和一条流量最大的路的流量的比值。主要是求最大流量的路,深搜一遍,数组q[ i ]表示从s到i点的最大流量,不断更新即可。#include #include #include #include using namespace std;#define maxn 1500#define INF 10000000struct Edge{ int f原创 2014-03-26 12:52:50 · 527 阅读 · 0 评论 -
hdu 3667 Transportation 费用流
#include #include #include using namespace std;const int N=500;const int MAXE=20000000;const int inf=1<<30;int head[N],s,t,cnt,n,m,ans,k;int d[N],pre[N];bool vis[N];int q[MAXE];int flow;st原创 2014-03-24 14:17:20 · 399 阅读 · 0 评论 -
poj Kaka's Matrix Travels 费用流
题意:在一个矩阵中每个格子上都有一个非负数,卡卡的一次旅行是从矩阵的左上角移到右下角,并将他走过的格子中的数字累加,并且走过的格子中的数字变为0,问经过k次这样的旅行最多可得到多大的数字。费用流,将每个方格拆成两个点,中间连接一条容量为1的费用为该格子数字的相反数,再连接一条容量为无穷费用为0的路径,因为只能得到一次数字,再将每个格子与右边和下边的格子连容量为无穷费用为零的路,最后连接右下角的原创 2014-01-11 21:03:34 · 588 阅读 · 0 评论 -
hdu 3572 Task Schedule hdu 2883 kebab 最大流
注意一个地方,在建立好层次图进行dfs增广时,如果某个点增广不出流量,那么将该点level值置为0,即将它在该层次图中删除,剪枝,否则会超时~#include #include #include using namespace std;const int maxn=1050;#define inf 10000000int n,m;int level[maxn],que[maxn*原创 2013-12-20 16:18:32 · 568 阅读 · 0 评论 -
hdu 4292 Food 最大流
将人拆点,之间连接一条容量为1的边,表示一个人只能选一次,从s到每种食物连接一条容量为该种食物总数的边,从每种饮料连接一条容量为该种饮料总量的边,如果一个人喜欢某种食物或饮料,连边即可。#include #include #include using namespace std;const int maxn=1200;const int inf=1000000;int n,f,d;原创 2013-12-22 21:23:54 · 458 阅读 · 0 评论 -
zoj 2429 Destroying The Graph 最小点权覆盖
#include #include #include using namespace std;#define Max 230#define INF 100000000int flow[Max][Max],d[Max];int vis[Max*3];int sta,end; vector sum;int min(int a,int b){ if(a<b) return原创 2013-12-12 17:12:35 · 663 阅读 · 0 评论 -
poj 3469 Dual Core CPU 最小割
#include #include #include using namespace std;const int maxn=20000+50,inf=100000000;int n,m;int level[maxn],que[maxn*10];int head[maxn*3],lon;int min(int a,int b){ if(a<b) return a; else r原创 2013-12-12 17:00:09 · 498 阅读 · 0 评论 -
poj 2112 Optimal Milking 网络流 最大流
题目大意:农场有k个挤奶器,每个挤奶器最多容纳m头奶牛,所有奶牛和挤奶器之间的距离已知,安排奶牛挤奶方案使得所有奶牛中走的最大距离最小化。利用最大流来做,奶牛和挤奶器看做图中节点,先用floyd算出每个节点之间的最小距离,二分最大距离d,然后建图,边长大于d的都去掉,原创 2013-09-07 20:31:13 · 454 阅读 · 0 评论 -
网络流之--混合图的欧拉回路 出自yzmduncan.iteye.com/blog/1149049
基础知识 欧拉回路是图G中的一个回路,经过每条边有且仅一次,称该回路为欧拉回路。具有欧拉回路的图称为欧拉图,简称E图。 无向图中存在欧拉回路的条件:每个点的度数均为偶数。 有向图中存在欧拉回路的条件:每个点的入度=出度。 欧拉路径比欧拉回路要求少一点: 无向图中存在欧拉路径的条件:每个点的度数均为偶数或者有且仅有2个度数为奇数的点。 有向转载 2013-08-24 16:56:51 · 989 阅读 · 0 评论 -
hdu 1565 方格取数(1) 最大点权独立集 网络流
题目是中文的~对于网格这种图是一个典型的二分图(只要无奇数长度的回路的图就是二分图),先建立二分图,对于第 i 行第 j 列的点,i + j 为偶数的归为 x 集合,为奇数的归为 y 集合,相邻格子间连边,这就完成了二分图的构建。题目要求取出来的值最大,且不能相邻,所以每一个点独立集都符合不相邻的要求,现在要使独立集的点权和最大,因为点独立集和点覆盖集是对应的,具体说一个图去掉任意一个点独原创 2013-11-08 21:53:42 · 653 阅读 · 0 评论 -
poj 1273 Drainage Ditches
题目大意:对于一个排水系统,求它的最大排水速度。即最大流,用的是标号增广路算法。#include #include #include #define INF 100000000int min(int a,int b){ if(a>b) return b; else return a;}struct node{ int c,f;}map[210][210];原创 2013-08-25 17:01:17 · 434 阅读 · 0 评论 -
zoj 2874 Paratroopers 网络流 最小割
题目大意:在一个网格上会出现一些火星人,需要消灭他们,因此要在某些行(或列)安装激光枪,并且该激光枪只能杀死该行(或列)的火星人,在某列(或行)安装一个激光枪会产生花费,总的费用为这些费用的乘积,求把所有火星人都杀死的最小总花费。 相当于选一些行或列覆盖所有图中的火星人顶点,若把火星人视为边,行和列视为顶点,则可以这样构图:引入源汇s,t,对每个行节点,连接s与行节点,容原创 2013-09-23 23:43:31 · 824 阅读 · 0 评论 -
hdu 2686 Matrix hdu 3376 Matrix Again 费用流
两道题母十分类似,只是数据量问题,都可以用费用流来解,所以只贴前一道题的代码了,从右下往左上等效从左上往右下,因此即相当于走两次,建图方式同poj 3422。#include #include #include using namespace std;const int N=2000;const int MAXE=200000;const int inf=1<<30;in原创 2014-01-11 21:12:56 · 434 阅读 · 0 评论 -
poj 1698 Alice's Chance 网络流
以电影为x节点,天数为y节点,如果电影a需在w周之前完成,那么连接该电影节点到前w周能去的那几天,容量为1,源点s点连接每个电影节点,容量为该电影需要去的天数,每一天连接汇点 t ,容量为1,表示每天只能去一个,求最大流,如果最大流等于所有应去的天数,则输出yes,否则no。#include #include #include using namespace std;#define m原创 2014-03-10 23:16:01 · 389 阅读 · 0 评论 -
hdu 3416 Marriage Match IV 最大流 最短路径
在无向图上求s到t最短路径的条数且最短路径间不能有重边(即弱独立轨)#include #include #include #include using namespace std;#define maxn 2100#define INF 100000struct node{ int u,v,dis;};struct Edge{ int from, to,原创 2014-03-13 11:18:12 · 548 阅读 · 0 评论