![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 51
xtttgo
这个作者很懒,什么都没留下…
展开
-
HDU 5294Tricks Device(最短路+最大流)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294题意挺裸的,就是A,B两个人,B要到A那里去,A不想让B过来,问,(1) A至少要切断多少道路才能成功阻止B。(2)A最多切掉多少条路,B还能到达。(双向边)先看第二问,第二问比较简单,就是求B到A的最短路,然后求一下最少用几条路,除了这几条不切断,剩下的都可以切断。所以答案就是:总边数减去(原创 2016-01-29 11:54:06 · 329 阅读 · 0 评论 -
BZOJ1001[BeiJing2006]狼抓兔子(无向图最小割)
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1001这题的题意其实就是求一个最小割,但是由于是无向图,所以加边的时候,两边的流量都要是输入的权值,然后就是一个dinic求一下最小割。但是这题貌似有很高超的技巧来搞,可以把平面图上的最小割转成对偶图上的最短路来做,这样可以起到很明显的优化效果。现在还不是很明白,如果以后明白了,会再来更新。原创 2016-05-08 12:41:22 · 929 阅读 · 0 评论 -
HDU 1565 1569 方格取数 (最小割)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565 这两题其实是同一题,一个数据小,一个数据大,据说数据小的时候能用状压DP。哇!好神奇呀,可是我不会。就用dinic搞了一下。 思路:假设选了(x,y)点,那么(x,y)周围的点都不能选了。那么将图分为两部分,一部分是(x+y)%2==0,另一部分是(x+y)%2==1。所以在一个点和他周围的点中,原创 2016-04-21 16:20:26 · 309 阅读 · 0 评论 -
POJ3422 Kaka's Matrix Travels 拆点+费用流(SPFA)
链接:http://poj.org/problem?id=3422 题意:一个n*n的矩阵,走k次,每次从左上角开始,右下角结束。每个点有个值,走上去的时候获得这个值,但是走过之后就会变成0,也就是说只能吃一次。每次走只能向下或者向右,问你走k次之后能获得的最大值。 思路:走一次的时候很容易,只要n*n递推一下就好了,那么走k次是不是递推k次呢?错,因为即使第一次的时原创 2016-02-29 21:22:33 · 318 阅读 · 0 评论 -
UVA10806 Dijkstra, Dijkstra. (最小费用最大流)
UVA比较慢,就给个vjudge上的链接吧: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=29819 题意:一个无向图,每条边只能走一次,求1到n往返的最短距离,走不到就输出Back to jail。 题目名字很误导思路,一开始就在想最短路一次,然后去掉走过的边,再最短路。但是仔细思考会发现这个其实是不对的,有可能:第原创 2016-02-29 21:41:14 · 868 阅读 · 0 评论 -
POJ1815 Friendship(求最小割点 dinic)
传送门:http://poj.org/problem?id=1815 题意就是求s点到t点,最少去掉几个点使得他们不连通。如果无解输出NO ANSWER! 因为最小割只能求割掉几条边的解,我们要求的是割掉几个点。那么我们可以这样考虑:把每个点拆成入点和出点。入点->出点权值为1。那么割掉这条边就相当于割掉这个点了,就能把这题转化成最小割。那么原来的边,我们是不希望去割它的,所以我们原创 2016-02-22 13:40:45 · 1501 阅读 · 0 评论 -
POJ3469 Dual Core CPU(最大流最小割定理)
传送门:http://poj.org/problem?id=3469 题意:有n个点,m条边。有一个双核电脑,对于每个点来说,运行在A核和B核耗费分别是Ai和Bi,然后是m条边,u,v,w。如果u和v在不同的核上运行,就会产生w的耗费。问:最少耗费是多少? 题目乍看之下很难想到用什么样的思路来做。但是我们可以看出,这题是将n个点分为两部分,一部分在A核,一部分在B核,分为两部分。求两原创 2016-02-19 14:01:55 · 331 阅读 · 0 评论 -
POJ2112 Optimal Milking (二分+最大流)
链接:http://poj.org/problem?id=2112题意是有K个机器,C头奶牛,每个机器能给M个奶牛挤奶,求奶牛的要走的最大行走距离的最小值。输入的邻接矩阵是直接相连的距离,要求每个点之间的最短距离要floyd一下。建图的时候这样考虑,建立一个源点,源点到每头牛的流量是1,二分牛到机器的距离,小于等于这个距离的路径流量++,建立一个汇点,每个机器到汇点的流量=M。原创 2016-02-05 10:58:27 · 345 阅读 · 0 评论 -
POJ3436 ACM Computer Factory(dinic最大流+统计不同弧上流量的变化)
传送门:http://poj.org/problem?id=3436 这题的题意实在是麻烦,看题目看了好久好久。。。 题意:输入P和N,P表示零件数,N表示机器数。 0——必须没有 1——必须有 2——可有可无 机器要组装零件,每个机器有2*P+1个数字来描述,第一个数字是装配速度,可以理解为容量,然后的P个数字是输入的要求,后P个数字是输出结果,问你最大流和变化的流量。 思路很简单,原创 2016-02-17 18:29:47 · 450 阅读 · 0 评论 -
POJ2516 Minimum Cost(K次费用流)
链接:http://poj.org/problem?id=2516 题意太麻烦了,看懂题意之后就很简单了。。。不解释题意了。。。 思路:事先判断一下物品够不够。然后对每个物品建图跑费用流。建图的时候要小心,容易写错。 直接上代码吧#include<cstdio>#include<cstring>#include<string>#include<queue>#include<map>#原创 2016-03-01 22:18:46 · 281 阅读 · 0 评论 -
POJ2391 Ombrophobic Bovines(二分+拆点+最大流)
链接:http://poj.org/problem?id=2391 题意: 有n个点,m条边(无向边),先输入n个点的信息,前面那个是这个点内已经有的牛,后面的是这个点最多可以容纳几头牛。m条边就是起点,终点,所需时间。问:所有奶牛都在点内安排好,所需的最少时间。如果无解输出-1。 根据题意,我们会想到一个思路,就是二分最大距离,然后跑最大流,这是一个初级思路,我写了这个之后发原创 2016-02-13 23:15:49 · 325 阅读 · 0 评论 -
POJ1087 A Plug for UNIX(map+dinic最大流)
链接:http://poj.org/problem?id=1087 这题题意读懂了以后就好做了。 题意: 输入n,后面是n个插座。输入m,后面是m个电器,以及他们使用的插座名字 输入k,后面是k种转换器,表示前面的那个插座可以通过转换器转换到后面的插座。 问:最少有几个电器没有插座。 很容易想明白,这是一个最大流问题。建立一个源点和汇点,源点到每种插座的权原创 2016-02-13 17:22:28 · 322 阅读 · 0 评论 -
POJ2195 Going Home(SPFA最小费用最大流)
链接:http://poj.org/problem?id=2195 题意:一个n*m的矩阵里,有x个人和x个房子,每个人都要进入一个房子,每个房子只能容纳一个人,每个人移动一格的费用是1,问你x个人全部进入到房子的最小花费是多少。 这题的思路很容易想到,建立一个源点和汇点。汇点到每个人的流量为1,花费为0。每个人到每个房子的距离都处理成边,流量为1。每个房子到汇点的流原创 2016-03-01 17:53:04 · 395 阅读 · 0 评论 -
HDU 4807 Lunch Time(费用流)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4807 题意:告诉你一些单向边,问你k个人最快能多久从0点到达n-1点。 思路:这题可以看出是费用流,但是费用流只能求出最大流和最小费用,而且是包括所有增广路的。但是实际上,每条路每秒钟都可以进入一批人,所以在一些情况下,可以考虑等待一段时间走短的路,而不是每条路都直接进入。所以我们在费用流中每次增广求原创 2016-07-16 11:33:53 · 371 阅读 · 0 评论