网络流
文章平均质量分 81
九野的博客
这个作者很懒,什么都没留下…
展开
-
HDU 4067 Random Maze 费用流 构造欧拉通路
题目链接:点击打开链接题意:给定n个点m条有向边的图, 起点s ,终点t下面m条边 u,v, a,b 若选择这条边花费为a, 不选择花费为b构造一条欧拉通路使得起点是s,终点是t,且花费最小。思路:首先能想到一个简单的思路:假设所有边都选择,然后在费用流里跑,就会出现负环的问题。。所以为了避免负环,让所有费用都为正值:int sum = 0;若a>b, 则 费原创 2015-04-22 14:33:12 · 1082 阅读 · 0 评论 -
HDU 3987 求断开两点最小花费下的边数 最小割
题意:给定n个点m条边(点标从0开始)下面m行 u v d(边权) k(k=0表示单向,1表示双向)问:把0 和 n-1点断开 使得0点无法到达n-1点 需要删去多少条边(删边的花费为边权) 问在最小花费情况下,输出要删的边数 思路:最小割裸题,以0为源点,n-1为汇点,边权改为 w* E(E>最大的边权) +1最后最大流%E,就可以得到边数。注意用 __int原创 2014-01-22 16:03:30 · 1911 阅读 · 0 评论 -
HDU 4289 最小割=最大流 求去掉最少点权值使得 起末点不连通
题意:n个点 m条边下面起点 和终点n行表示点权值m条无向边 问:去掉一些点需要的花费为该点的点权值,问要最少多少花费可以使得起点 和 终点 不连通 网络流裸题,按题目直接可以建图; #include #include #include #include using namespace std;#define ll int#d原创 2013-11-02 19:31:03 · 1755 阅读 · 0 评论 -
HDU 3046 Pleasant sheep and big big wolf 最小割
题意:给定n*m个点的矩阵0为空点,1为羊,2为狼相邻点之间有一条路。问要使得狼与羊不连通最少要去掉几条边最小割#include#include#include#include#include#includeusing namespace std;#define ll int #define N 40010#define M 105000#defin原创 2014-04-22 18:42:29 · 1357 阅读 · 0 评论 -
UVA 10779 Collectors Problem 网络流+建图
题目链接:点击打开链接题意:白书P370#include#include#include#include#include#include using namespace std;#define ll intconst int MAXN = 100010;//点数的最大值const int MAXM = 400010;//边数的最大值#define N M原创 2014-09-15 22:59:41 · 1465 阅读 · 0 评论 -
HDU 4975 A simple Gaussian elimination problem. 网络流+矩阵上的dp
随机输出保平安啊和hdu4888一个意思,先跑个网络流然后dp判可行。==n^3的dp过不了,所以把n改成200。==因为出题人没有把多解的情况放在200*200以外的矩阵。#include #include #include #include #include using namespace std;const int MAX_N = 1207;const in原创 2014-08-21 17:53:30 · 2816 阅读 · 7 评论 -
HDU 4971 A simple brute force problem. 强连通缩点+最大权闭合图
题意:给定n个项目,m个技术难题下面一行n个数字表示每个项目的收益下面一行m个数字表示攻克每个技术难题的花费下面n行第i行表示第一个数字u表示完成 i 项目需要解决几个技术难题,后面u个数字表示需要解决的问题标号。下面m*m的矩阵(i,j) = 1 表示要解决j问题必须先解决i问题。(若几个问题成环,则需要一起解决)问:最大收益。思路:先给问题缩点一下,原创 2014-08-21 17:45:58 · 1410 阅读 · 0 评论 -
UVALive 2531 The K-League 网络流+建图
题目链接:点击打开链接白书例题P369原创 2014-09-18 23:18:49 · 1156 阅读 · 0 评论 -
URAL 1736 Chinese Hockey 网络流+建图
题目链接:点击打开链接题意:给定n个队伍的得分情况,输出任意一个可行解。n个队伍任意2个队伍 a, b 间有且仅有一场比赛。比赛结果分4种:1、a +3, b +02、a +0, b +33、a +2, b +14、a +1, b +2我们发现其实每种结果2个队伍得分和总是3 且4种情况就是3的所有拆分和的形式。所以我们把任意两个队伍组合成一个点。把n个原创 2014-09-18 16:36:30 · 1236 阅读 · 0 评论 -
SGU 242 Student's Morning 网络流(水
题目链接:点击打开链接题意:给定n个人,m个终点下面n行表示每个人可以去m个点。每个人只能去一个点。输出任意一个方案使得每个点至少有2个人到达。若存在输出m行,第一个数字表示i这个点来了几个人,后面是人的点标。思路:建一个二部图n-m,然后m到汇点限流2,判断是否满流,若不满流就无解。若满流则其他的人随便走。#include #includ原创 2014-09-18 16:24:09 · 1232 阅读 · 0 评论 -
SPOJ 13041 BNU 28769 The Black Riders 二分+网络流 建图
题目链接:题意:给定n个人 m个逃生洞穴 至少k个人进入逃生洞穴 挖洞时间c下面n*m的矩阵表示每个人到每个洞需要的时间。一个洞穴开始只能容纳一个人,可以被拓展一次,即变成可以容纳2个人(一个洞穴只能被拓展一次)当a进入洞穴后不会开始拓展,直到有一个人b在洞穴门口等,a才会开始拓展空间,拓展的时间的c,c时间后b才能进入洞穴。问至少k个人进入洞穴的最短时间。(数据保原创 2014-09-05 10:51:26 · 1503 阅读 · 0 评论 -
HDU 4888 Redraw Beautiful Drawings 网络流 建图
题意:给定n, m, k下面n个整数 a[n]下面m个整数 b[n]用数字[0,k]构造一个n*m的矩阵若有唯一解则输出这个矩阵,若有多解输出Not Unique,若无解输出Impossible思路:网络流,,,n行当成n个点,m列当成m个点从行-列连一条流量为k的边,然后源点-行连一条a[i]的边, 列-汇点 流量为b[i]瞎了,该退役了 T^原创 2014-07-29 19:40:13 · 2026 阅读 · 0 评论 -
HDU 4307 Matrix 最小割 矩阵乘法展开
==线代好难#include#include#include#include#include#include#includetemplate inline bool rd(T &ret) { char c; int sgn; if(c=getchar(),c==EOF) return 0; while(c!='-'&&(c'9')原创 2014-10-05 00:03:12 · 1664 阅读 · 0 评论 -
最小割转最大流
http://blog.csdn.net/vsooda/article/details/7397449未AC原创 2013-11-05 19:34:07 · 1404 阅读 · 0 评论 -
HDU 1569 黑白染色+最小割
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define N 3000#define M 10000#define inf 1原创 2014-01-19 18:07:19 · 1678 阅读 · 0 评论 -
费用流模版
bzoj 2245,速度非常神 /************************************************************** Problem: 2245 User: neko13 Language: C++ Result: Accepted Time:560 ms原创 2013-10-24 11:24:14 · 2220 阅读 · 0 评论 -
Codeforces 513F1 513F2 Scaygerboss 网络流
题目链接:点击打开链接题意:给定n*m的地图 a个男人 b个女人下面n*m的方格图.表示空地 *表示障碍。下面第一行给出中性人的坐标和移动时间下面a行给出每个男人的坐标和移动时间下面b行给出女人的坐标和移动时间。移动时间是指人移动到相邻矩阵的时间(人是不能走到障碍物上的)每个空地上恰好有一间房子(一间房子只能住一对夫妇,住了人的空地别人还是可以走过的)。目标:使原创 2015-02-09 15:06:24 · 1401 阅读 · 0 评论 -
Codeforces 512C Fox And Dinner 奇偶建图 网络流
题目链接:点击打开链接题意:给定n个人和其权值。让人坐到任意多张圆形的桌子上使得任意两个相邻的人权值和为素数,且一张桌子至少3个人输出桌子数和每张桌子坐的人(输出任意一个具体方案)思路: 首先人的权值都是>=2的,也是就说组合成的素数一定是奇数奇数 = 奇数+偶数。所以桌子上的人一定是奇偶交错的,而且一张桌子人数是偶数个(即n必须为偶数,一半是奇数,一半是偶数)由上原创 2015-02-03 18:22:27 · 1772 阅读 · 0 评论 -
网络流模版
九野的博客,转载请注明出处 : http://blog.csdn.net/acmmmm/article/details/11199941特别注意:若是需要双向边,则addedge中第二个edge(反向弧) 的cap应该为cap而不是0如:http://acm.hdu.edu.cn/showproblem.php?pid=3870 (此题虽用网络流容易超时,但网络流的建图十分巧妙,要符合原创 2013-09-06 10:48:43 · 2569 阅读 · 1 评论 -
HDU 4411 Arrest 费用流
题目链接:点击打开链接题意:给定n+1个点([0,n] )m条边的无向图。起点为0,k个人初始在起点,去遍历图使得每个点至少被一人走过且遍历 i 点时 i-1 必须已经被遍历。使得k人的路径和最小,最后k人要回到起点。思路:费用流,因为对于一个人来说,这个人遍历点的序列一定是一个递增序列(不需要连续)所以建图时i的出点只需要连接i+? 的入点。若建一个完全图则会因为原创 2015-01-30 19:00:15 · 1163 阅读 · 0 评论 -
HDU 4106 Fruit Ninja 区间k覆盖问题 最小费用流
题目链接:点击打开链接题意:给定n长的序列,m ,k选择一些数使得 选择的数和最大。输出和。限制:对于任意的区间[i, i+m]中至多有k个数被选。思路:白书P367,区间k覆盖问题,把一个区间看成一个点,那么选了一个点就相当于覆盖了m个区间。#include#include#include#include#includeusing namespace std原创 2014-12-04 23:44:00 · 1799 阅读 · 0 评论 -
CSU 1319 CX‘s dreams 最大权闭合图 求最多的正点权个数
题目链接:点击打开链接思路:显然就是问最大权闭合图 和 能取最多的正点权个数1、首先对于正权值的付出,直接取,而对于梦想也忽略正权值的付出,这样就转成一个裸的最大权闭合图了。2、计算此时的正点权个数:把所有点权*大数C,然后把正点权值+1,跑出来流量就是 flow / C, 最多的正点权个数就是 正点权点集-flow%C.#include #include #inc原创 2014-11-25 23:27:29 · 1433 阅读 · 2 评论 -
POJ 1698 Alice's Chance 网络流(水
题目链接:点击打开链接题目大意: 有个人想拍n部电影,每部电影限定每周哪几天可以拍 并且必须在第ki周之前把这部电影拍完,问能否拍完n部电影解题思路: 把每部电影当作一个顶点,源点指向这些顶点,容量为该电影需要拍多少天 然后把每一天都当作顶点,某个工作可以在这天完成就连容量为1大边原创 2014-11-16 20:25:00 · 1349 阅读 · 0 评论 -
HDU 4309 Seikimatsu Occult Tonneru 网络流+状压
题目链接:点击打开链接题意:题意:给出一张N(N0时,表示这条边是古老的桥,u连向v,如果不修这座桥,则只能通过1人,但是如果花费w的费用修桥的话,则通过这座桥的流量便没有限制。桥的总数思路:可以建立最大流模型来求解, 增加一个源点S,和一个汇点T。 S向每个有人的点,连一条容量为人数的边, 图中普通的u->v的有向边,连一条u->v的流量为无穷的边, 桥的流量则为原创 2014-11-15 23:24:27 · 1335 阅读 · 0 评论 -
HDU 3879 Base Station 最大权闭合图
题目链接:点击打开链接题意:给定n个带权点m条无向带权边选一个子图,则这个子图的权值为 边权和-点权和求一个最大的权值把边也当成点。然后是最大权闭合图#include#include#include#include#includeusing namespace std;#define ll intconst int MAXN = 100010;原创 2014-11-13 23:31:46 · 1408 阅读 · 0 评论 -
ZOJ 3792 Romantic Value 最小割(最小费用下最小边数)
求最小割及最小花费把边权c = c*10000+1然后跑一个最小割,则flow / 10000就是费用 flow%10000就是边数。且是边数最少的情况。。#include#include#include#include#include#include#includeusing namespace std;#define ll int #define N 50原创 2014-06-02 16:12:08 · 2163 阅读 · 0 评论 -
UVA 11765 Component Placement 网络流 新姿势建图
题目链接:点击打开链接题意:给定n个物品, m个约束条件把n个物品分到2个集合里下面第一行表示i物品分到第一个集合里的花费第二行表示分到第二个集合里的花费第三行表示分物品的限制(1表示只能分到第一个集合,-1表示只能分到第二个集合,0无限制)下面m行给出约束条件u v cost 表示u v 两点必须能互相沟通,若两点已经在同一集合则花费为0 ,若不在同一集合则花费增原创 2014-07-29 00:23:47 · 1706 阅读 · 0 评论 -
Acdream 1171 Matrix sum 上下界费用流
题目链接:点击打开链接Matrix sumTime Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others)SubmitStatisticNext ProblemProblem Descriptionsweet和zero在玩矩阵游戏,sweet画了一个N *原创 2014-08-03 00:04:44 · 1553 阅读 · 0 评论 -
POJ 2455 二分+网络流
题意:给定n个点m条边的无向图 K值下面给定m条边及其边权问:起点为1,终点为n找到至少K条边不相交的路径,输出这个方案中所有边的最大边权 思路:二分答案+网络流,使得汇点>=K即为可行解 #include #include #include #include #include #include #include #include原创 2014-01-25 22:52:08 · 1595 阅读 · 0 评论 -
POJ 2112 二分+网络流
题意:K个挤奶器 C头牛 每个挤奶器可同时挤C头牛牛和挤奶器均分散在各个农场下面给出 [K+C,K+C] 的邻接矩阵。表示任意点间距离(0表示无法到达)问:距离挤奶器最远的牛 的距离(设计一个方案使得所有牛都能到达挤奶器并且使这个距离最小,题目保证有解)思路:Floyd求传递闭包。二分这个距离(在距离内的边都可行),网络流判断是否可行(XXWG的代码)#原创 2014-01-25 21:15:58 · 1344 阅读 · 0 评论 -
POJ 2516 费用流裸题
题意:n家店,m个供应商,k件商品n*k 矩阵 第i行表示第i家点对物品的需求m*k矩阵 第i行表示第i家供应商物品存货下面有k个矩阵第k1个矩阵 大小为n*m,表示对于第k1件物品在运输中的消耗 题目保证存货能够供应需求问:让所有店满足需求时,最小运输消耗思路:费用流裸题原创 2014-01-23 23:03:18 · 1594 阅读 · 0 评论 -
POJ 2195 费用流裸题
题意:给定n*m的矩阵 (最大100*100).为空地 H为房子 m为人 (题目保证 H的个数一个房子只能住一个人问:让每个人回到任意一个房子使得所有人需要步数最少,问最少需要多少步。思路:费用流,虚拟源点与人建边 费用为0, 一个人与所有房子建边,费用为步数, 房子与汇点建边费用为0所有边流限为1#include #include #include #原创 2014-01-23 21:28:01 · 1842 阅读 · 4 评论 -
HDU 3605 二分图的多重匹配 || 状压网络流
n个人m个星球,下面 n*m 的矩阵i行第j个 为1 表示 第i人能住在j星球 为0表示不能居住 最后一行m个表示该星球容量问是不是所有人都能住在m个星球里 这个题最大流比较好想 二分图建图:n个人建x集 , 矩阵直接做映射边, m个星球因为非单一匹配,所以用栈 这里需要一个优化就是,如果第i人不能居住了 , 直接跳出匹配算法,输出NO原创 2013-10-17 21:44:19 · 2222 阅读 · 0 评论 -
HDU 3472 混合图欧拉回路 + 网络流
题意:T个测试数据n串字符 能否倒过来用(1表示能倒着用)问能否把所有字符串 首尾相接 欧拉回路是图G中的一个回路,经过每条边有且仅一次,称该回路为欧拉回路。具有欧拉回路的图称为欧拉图,简称E图。 混合图就是边集中有有向边和无向边同时存在。这时候需要用网络流建模求解。不能倒着用就是有向边,能倒着用就是无向边http://yzmduncan.iteye.com原创 2013-10-31 20:21:32 · 2415 阅读 · 2 评论 -
HDU 4292 网络流 Food
题意:n 个人 f 种食物 d 种饮料f 个数字表示每种食物的个数d个数字表示每种饮料的个数n行f列i行j列表示 第i个人是否喜欢 第j 种食物 n行d列同上 当一个人同时有吃有喝就被满足,问最多能满足多少人 思路:设0为源点[1, f ] 表示食物 (若i行j列是 Y 则建边 addedge(i, f+j , 1) )把人拆点拆成原创 2013-11-02 19:39:45 · 1350 阅读 · 0 评论 -
HDU4183 起点到终点再到起点 除起点每点仅经过一次 网络流
题意:T个测试数据n个圆下面 fre x y r 表示圆的频率 坐标和半径要求:从频率为400(最小的) 圆 走到频率为789(最大)的圆,再走回来,除起点每个点只能经过一次问这样的路径是否存在 走法:从400->789时经过的圆频率只增不减, 只能走相交的圆 反之则频率只减不增,也只能走相交的圆 建图:以789为源点, 400为汇原创 2013-10-30 23:20:34 · 2307 阅读 · 2 评论 -
HDU 3572 网络流
题意:n个任务, m台机器(每台机器每天只能执行一个任务) 任务可以不连续执行,可以让别的机器交替执行下面n行 need st en 表示任务需要在 [st, en]之间完成,需要need天 (保证 en - st+1 >=need )问能否全部执行完 思路:0为源点,1-n为n个任务 (源点到天数边权值为 need)n+1 - n+1+Maxday 为天数原创 2013-10-25 17:57:41 · 1775 阅读 · 0 评论 -
CFGYM 2013-2014 CT S01E03 D题 费用流模版题
题意:n行, a房间的气球,b房间的气球i行需要的气球,与a房的距离,b房的距离求最小距离 #include #include #include #include #include #include #include #include #define N 2000#define M 10100#define inf 107374182原创 2013-09-25 23:28:41 · 2066 阅读 · 0 评论 -
HDU 3549 Flow Problem(有向边网络流)
题意:T个测试数据下面n,m表示n个点m条有向带权边m条边问:从1-n最大流多少测板子的题目,没啥思路下面用的是dinic,开始没有考虑反向弧debug了好久,附赠一大坨测试数据#include #include #include #include #include #include #include #include #include原创 2013-09-06 14:59:51 · 2468 阅读 · 0 评论 -
Uva 10806 求2条不相交最短路 费用流
题目链接:题意:给定n个点[1,n]m条无向带权边下面m行 u v dis 表示边问:从1走到n 再从n-1,最短需要走多远(走过的路不能再走) 思路:对于普通最短路我们可以用费用流,终点限流为1,费用为边权,每条边限流为1 , 得到 这里我们可以看作从 1-n的两条不相交最短路 这样我们将终点限流为2,满流时就有两条不相交的最短路不满流时说明没原创 2014-02-23 21:59:01 · 1926 阅读 · 0 评论