![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
_pkm_
love coding
展开
-
HDU1532Drainage Ditches(网络流入门+EK模板题)
是网络流的入门题,从EK开始网络流学习 EK通过BFS寻找增广路,然后更新最大流,直到找不到增广路。 学习资料#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>#include原创 2015-09-03 12:59:34 · 474 阅读 · 0 评论 -
HDU3081 3081 Marriage Match II(中等,好题)([二分最大流]+并查集)
题意:n个女孩,要和n个男孩配对,当每一个女孩都配对成功的时候,进入下一轮。每次都是女孩选择男孩,同时还告诉你哪些女孩和男孩之间没有吵过架,配对的原则是她们之间没有吵过架,同时女孩选择的男孩也不能和她的另外的闺蜜有过吵架。问最多可以进行几轮游戏。 思路:关键是建图,从女孩到男孩连一条边权是1 的边,在附加一个源点,源点到每一个女孩连一条权k的边,每个男孩连一条权k的边到汇点。然后跑最大流,判断是不原创 2015-09-24 11:27:14 · 414 阅读 · 0 评论 -
HDU4183 Pahom on Water(基础) [最大流]来回走不重复点的网络流.
题意:确实难懂啊,网上找了翻译:二维空间上有一些点,每个点有一个半径r和频率f,要从某一个点S走到另一个点T,然后再从T回到S。从S到T时,如果两个点表示的圆相交并且第一个点小于第二个点的频率的,那么能从第一个点到第二个点,从T到S时,第一个点的频率要大于第二个点的频率。除了S和T,每个点走后就会消失,问是否存在一种走法。 思路:按照题意的要求建立图 边为1 ,跑两次isap看看是否流是不小于2的原创 2015-09-23 12:42:22 · 473 阅读 · 0 评论 -
HDU 4240 Route Redundancy(基础) [最大流]一条流最大的路径
题意:依旧是那么难读懂,在城市A->B之间通过所有路径一小时之内能通过最大的车辆(Maxflow)/所有边上通过最大车流量(cap)的那条叫做redundancy ratio。最小的redundancy ratio是前者最大的车流量的那一条(cap),问minimum redundancy ratio是多少。 思路:最大流不用说,分母是在找最大流的时候记录下最大的cap#include<cstdi原创 2015-09-23 14:27:36 · 498 阅读 · 0 评论 -
HDU3549 Flow Problem (网络流入门题)
入门题: 我使用的是ISAP算法,效率还是可以的,复杂度是O(v*v*E) 学习资料#include<cstdio>#include<algorithm>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))const int maxn=20006;const int inf=1<<28;const int nv=20;//原创 2015-09-22 21:24:04 · 410 阅读 · 0 评论 -
HDU 3572 Task Schedule ([最大流]任务分配,判断满流)
题意:有M个机器,有N个任务。每个任务必须在Si 或者以后开始做,在Ei 或者之前完成,完成任务必须处理Pi 个时间单位。其中,每个任务可以在任意(空闲)机器上工作,每个机器的同一时刻只能工作一个任务,每个任务在同一时刻只能被一个机器工作,而且任务做到一半可以打断,拿去其他机器做。能否在规定时间内把任务做完。 思路:关键是抽象出模型,建立网络图。以0为源点,与每个任务之间连一条容量是p的边,任务与原创 2015-09-23 10:18:28 · 917 阅读 · 2 评论 -
HDU2883 kebab(中等) [最大流]判断满流(数据离散化)
题意:有一个烧烤机,每次最多能烤 m 块肉,现在有 n 个人来买烤肉,每个人到达时间为 si,离开时间为 ei,点的烤肉数量为 ci,点的烤肉所需烘烤时间为 di,每个人要烤的肉可以分成若干份在同时烤,问是否存在一种方案可以满足所有顾客的需求。 思路:建图很巧妙,参考网上思路,HDU3572 与本题有些相似之处,但是本题的变化在于,时间的区间跨度太大,不能够与区间的每一个时刻连边,但是注意到人的个原创 2015-10-02 10:59:07 · 408 阅读 · 0 评论 -
HDU3468 Treasure Hunting(中等) [最大流](二分匹配)+最短路
题意:在一张寻宝图上,走最短路从一个汇合点到下一个汇合点,如果到汇合点上的路径有金币的话,只能拿一个,拿过后这个点就变为了可以通行的没有金币的点,问最多能拿几个金币。(汇合点按顺序编号是A~Z||a~z的点) 思路:最大流建图挺难的,参考网上的思路,用BFS预处理所有的汇合点到其他点的最短路径,然后找到在当前汇合点和下一个汇合点之间的金币,把当前的汇点与这个金币连一条边权是1的边。最后源点与每一个原创 2015-09-30 16:36:11 · 597 阅读 · 0 评论 -
HDU 3416 Marriage Match IV(中等,好题) [最大流]最短路+最大流
题意:告诉你一个有向图,现在,从A到B问最短的路有几条(一条路走过就不能在走了,某个顶点可以走多次) 思路:首先我们需要找出最短路,然后用这些在最短路上的边形成一个最短路边的网络。最后把这些边的权值设为1,跑一遍最大流即可。#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<cstring>u原创 2015-09-28 13:21:58 · 1019 阅读 · 0 评论 -
HDU 3277 Marriage Match III(中等,好题)[二分最大流]+拆点
题意:基本与3081一样,但是多了每个女孩可以另外选任意k个不喜欢的 思路:拆点。把点i拆分为i和i+n,i到i+n连一条权为k的边,i与j连一条权是1的边。#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;#define cl(a,b) memset(a,b,si原创 2015-09-25 11:15:54 · 320 阅读 · 0 评论 -
HDU3081 使用Floyd传递关系,二分最大流
再记录下,使用Floyd 传递关系的用法,同时把模板更新了写法,看起来更酷。#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))const int maxn=505;const int inf原创 2015-09-24 12:32:55 · 347 阅读 · 0 评论