图论-最大流
文章平均质量分 84
iHge2k
专注数据结构和算法
展开
-
loj 1156(二分+最大流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26870 思路:由于溢出问题,wa了半天,还以为构图错了呢,查了半天!一看到最大最小问题,就应该想到二分,二分最大距离,然后建图跑最大流验证。 1 #include 2 #include 3 #include 4 #include原创 2014-05-26 18:08:34 · 383 阅读 · 0 评论 -
sgu 326(经典网络流构图)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=13349 题目大意:有N个球队在同一个赛区,已知他们胜利的场数,还剩下的在赛区内的比赛数和跨赛区的比赛数的和,和在赛区内的比赛对阵矩阵。问,1号球队是否可以不小于其余球队胜利场数的最大值。 感觉大牛的思路很好:先贪心一下,让1号球队赢得所有比赛,其余球队输掉所有跨原创 2014-05-26 18:06:45 · 489 阅读 · 0 评论 -
hdu 4240在(最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4240 思路:题意真的有点难理解:在城市A->B之间通过所有路径一小时之内能通过最大的车辆(Maxflow)/所有边上通过最大车流量(cap)的那条叫做redundancy ratio。最小的redundancy ratio是前者最大的车流量的那一条(cap),问minimum redundancy原创 2014-05-26 18:06:32 · 311 阅读 · 0 评论 -
poj 3498(最大流+拆点)
题目链接:http://poj.org/problem?id=3498 思路:首先设一个超级源点,将源点与各地相连,边容量为各点目前的企鹅数量,然后就是对每个冰块i进行拆点了(i,i+n),边容量为能够接受的受损程度,这样就把点权问题转化为边权问题了,然后就是对于那些能够相互跳跃的冰块之间连边(i+n,j),(j+n,i),边容量为inf。最后就是枚举汇点看是否等于总数。 1 #i原创 2014-05-26 18:05:04 · 546 阅读 · 0 评论 -
poj 2455(二分+最大流)
题目链接:http://poj.org/problem?id=2455 思路:求1-n的路径中最长段的最小值,显然要用到二分,我们二分最长段,如果当前u,v的距离小于等于limit,则连边(双向边),边容量为1,代表只能走1次。然后就是以1为源点,n为汇点跑最大流,如果maxflow>=T,则在(low,mid)中搜索,否则就在(mid,high)中搜索。 1 #include原创 2014-05-26 18:04:32 · 382 阅读 · 0 评论 -
poj 3469(网络流模版)
题目链接:http://poj.org/problem?id=3469 思路:终于把网络流的模版测试好了,在Dinic和Sap之间还是选择了Sap,事实证明Sap确实比Dinic效率高,在此贴出自己的网络流模版: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespa原创 2014-05-26 18:04:19 · 441 阅读 · 0 评论 -
poj 3228(二分+最大流)
题目链接:http://poj.org/problem?id=3228 思路:增设一个超级源点和一个超级汇点,源点与每一个gold相连,容量为gold数量,汇点与仓库相连,容量为仓库的容量,然后就是二分最小的最大相邻距离,跑最大流验证即可。最大流用的是别人的Dinic模版。 1 #include 2 #include 3 #include 4 #include原创 2014-05-26 18:02:16 · 420 阅读 · 0 评论 -
hdu 3081(二分+最大流+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3081 思路设源点为0,汇点为2*n+1,对没吵过架的女生和男生连容量为1的边(这里要用到并查集,每个女生的朋友也可以和该男生连边),然后就是源点与女生连边,容量为mid(0http://blog.csdn.net/qq564690377/article/details/7857983),然后就是二分原创 2014-05-26 17:57:37 · 349 阅读 · 0 评论 -
hdu 3572(最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572 先说一下题意:有M个机器,有N个任务。每个任务必须在Si 或者以后开始做,在Ei 或者之前完成,完成任务必须处理Pi 个时间单位。其中,每个任务可以在任意(空闲)机器上工作,每个机器的同一时刻只能工作一个任务,每个任务在同一时刻只能被一个机器工作,而且任务做到一半可以打断,拿去其他机器做。问:原创 2014-05-26 17:57:26 · 289 阅读 · 0 评论 -
hdu 3416(最短路+最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3416 思路:就是先求一次最短路,最短路我们可以用spfa求出,然后取出最短路上的边建图,容量为1,最后一次SAP即可求出所有路径条数。 View Code 1 #include 2 #include 3 #include 4 #include 5 #includ原创 2014-05-26 17:57:41 · 354 阅读 · 0 评论 -
uva 11380(最大流+拆点)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36707 思路:根据题意拆点建图即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define原创 2014-05-26 18:07:21 · 440 阅读 · 0 评论 -
loj 1154(最大流+枚举汇点)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26868 思路:拆点,容量为最多能跳的步数,然后设立一个超级源点,源点与各点两连边,容量为一开始的企鹅数,最后就是枚举汇点了,跑最大流验证即可。 1 #include 2 #include 3 #include 4 #include原创 2014-05-26 18:08:22 · 356 阅读 · 0 评论 -
hdu 3277(最大流+二分+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3277 思路:3081差不多,就是多了每个女孩可以另外选任意k个不喜欢的,将每个女孩u分为u1,u2,若u喜欢v则加一条u1到v的边 否则加一条u2到v的边,令加u1到u2的容量为k的边; 然后不知道为什么,wa了一下午,哎。。。 以下是wa代码,不知道哪儿有bug. View Code原创 2014-05-26 17:57:39 · 496 阅读 · 0 评论 -
poj 2391(二分+最大流)
题目链接:http://poj.org/problem?id=2391 思路:求最短时间,可以想到二分,然后判断可行性。首先在原图上求 floyd,得到每两个棚之间的最短距离。然后拆点:将每个棚拆为 i 和 i’(流进和流出),添边(i,i’,INF)。增加源点 s 和汇点 t,从 s 连边到 i,容量为该棚现在的猫的数量,i’连边到 t,容量为该棚的容量。若棚 i 和棚 j 之间的距离不大于原创 2014-05-26 18:04:30 · 500 阅读 · 0 评论 -
hdu 4309(最大流+枚举状态)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4309 思路:2^12枚举修复哪些桥,不修复的桥没有花费,连接的边流量为1,要修复的桥则计算花费,边的流量为无穷,建立最大流模型来求解,增加一个源点S(0),和一个汇点T(n+1)。S向每个有人的点,连一条容量为人数的边,图中普通的u->v的有向边,连一条u->v的流量为无穷的边,对于u->v的隧道,原创 2014-05-26 17:57:47 · 336 阅读 · 0 评论 -
hdu 3549(最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 最大流基础题。 View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 22 6 #define inf 1<<28 7 int map[MAXN][M原创 2014-05-26 17:57:24 · 360 阅读 · 0 评论 -
网络流之SAP算法学习
终于决定开始学习网络流了=.= >那本书讲了很多关于求最大流的算法,然后我就只挑了一种传说中神奇的SAP算法学习。 首先引入几个新名词: 1、距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度)。 设点i的标号为level[i],那么如果将满足level[i]=level[j]+1的弧(i,j)叫做允许弧 ,且增广时只走允许弧。 2、原创 2014-05-26 17:57:22 · 379 阅读 · 0 评论 -
loj 1167(二分+最大流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26881 思路:我们可以二分最大危险度,然后建图,由于每个休息点只能用一次,就要拆点,将每个休息点拆点,边容量为1,代表只能使用一次,然后跑最大流验证。 1 #include 2 #include 3 #include 4 #incl原创 2014-05-26 18:08:43 · 513 阅读 · 0 评论 -
loj 1155(最大流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26869 思路:题目还是比较水的,由于点也有容量,则必须拆点,然后跑最大流。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace原创 2014-05-26 18:08:32 · 409 阅读 · 0 评论 -
hdu 2732(网络流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2732 思路:如果从某一根柱子能够直接跳到迷宫的外面,那么我们就将这个点连接到汇点。对于哪些不能跳出去但是又有柱子的点,那么 我们就去按照跳跃距离搜寻有没有其他的柱子能够去跳跃,如果能够找到的话,那么连接这两点,并且将容量控制为弧尾节点的柱子数,也正是由于一条弧只能够约 束一个顶点,所以我们需要进行拆原创 2014-05-26 18:00:50 · 342 阅读 · 0 评论 -
hdu 4292(拆点+最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4292 思路:为了控制一个人只连一瓶饮料,一份食物,那么我们可以把一个人拆成两个,他们之间连一条权值为1的边,另外左边连它喜欢的食物,权值为1,右边连它喜欢的饮料,权值为1,在起点连食物的时候加流量限制,终点加流量限制,跑一遍最大流即可。 View Code 1 #include原创 2014-05-26 17:57:53 · 374 阅读 · 0 评论 -
hdu 2883(最大流、判满流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2883 思路:这道和hdu 3572很像http://www.cnblogs.com/wally/archive/2013/05/03/3056726.html。 这里也一样,我们选择0为源点,然后源点和顾客之间连边,容量为(ni*ti),然后,将每个顾客要求的时间区间看成点(由于区间可能覆盖),因原创 2014-05-26 17:57:28 · 364 阅读 · 0 评论