
网络流
FeBr2
(๑•̀ㅂ•́)و✧
展开
-
网络流( ISAP + 拆点 )——Dining ( POJ 3281 )
题目链接: http://poj.org/problem?id=3281分析: 一头牛只吃指定的几种食物或饮料,但是每一种食物和饮料都只有一个,给出N头牛及其要求,F种食物和D种饮料,问最多可以满足多少头牛的需要(饮料和食物都满足需求)。题解: 1.建图:需要将每头牛拆成牛1和牛2,然后建立一个源点S,从S出发作边连接每一个食物,容量为1。然后从食物出发向和其对应的牛做边,容量为1。再连接原创 2016-07-27 14:02:39 · 578 阅读 · 0 评论 -
费用流——POJ 3686
题目链接: http://poj.org/problem?id=3686题意: 给出N个玩具,M个工厂,每个玩具在不同的工厂加工时间不一样,每个工厂同时只能加工一个玩具,求加工完所有玩具的最小时间(题中求的是最小平均加工时间,就是用总的时间/N)分析:我们发现在一个工厂加工N个玩具所需要的时间是 Total=a1+(a1+a2)+(a1+a2+3)+....+(a1+..+aN)=(N∗a1+原创 2017-03-07 00:36:17 · 344 阅读 · 0 评论 -
混合图求欧拉回路——Sightseeing tour ( POJ 1637 )
题目链接: http://poj.org/problem?id=1637分析: 给出N个点,M条边(有向或者无向),求这个图里是否存在欧拉回路。题解:一般图欧拉回路判定无向图: 每个点的度数都是偶数。有向图: 每个点的入度等于出度。混合图欧拉回路判定判定度数: 记录入度和出度的时候,对无向边任意定向。 如果存在欧拉回路,那么可以得到每个点入度与出度之差为偶数,否则就一定不能构成。网络流原创 2016-10-05 16:56:02 · 380 阅读 · 0 评论 -
最大权二分匹配(最大费用流) —— Best couple (玲珑学院 1047)
题目链接: http://www.ifrog.cc/acm/problem/1047分析: 给出n个男孩和m个女孩,男孩在标号为1~n的城市里,女孩在标号为n+1~n+m的城市里。再给出每个城市之间的距离,-1表示不可达。求怎么配对使得每一对之间的距离和最大。题解: 这是一道很明显的最大权二分图匹配,可以用KM做,也可以用最大费用流来做,这里用费用流的做法:将边权乘以-1后用最小费用最大流原创 2016-11-06 01:26:26 · 698 阅读 · 0 评论 -
最大流最小割——hihoCoder 1378
题目链接: https://hihocoder.com/problemset/problem/1378分析: 给出一个已经建立好的网络流图,这个图中的点被最小割分成两个部分S集合(包括源点)和T集合(包括汇点)题解: 先跑一边最大流,然后从源点开始BFS,如果搜到有边的容量还有剩余就加入S集合。因为最小割的边一定是满流的。AC代码:/**************************原创 2016-10-11 19:15:28 · 468 阅读 · 0 评论 -
DP+最小割——Intel Code Challenge Final Round (div.1 + div.2 combined) E
题目链接: http://codeforces.com/contest/724分析: 给出N个城市,每个城市有一个生产量P[i],和一个销售量S[i],然后可以从序号小的城市往序号大的城市运输货物,每对城市只能运输一次,每次最多运c个单位的货物。求最大交易量。题解: 我们很容易想到网络流建图然后跑一遍最大流求解,但是这个图里边的数量太多,肯定会MLE和TLE。因为最大流等于最小割,所以我们原创 2016-10-10 22:31:23 · 416 阅读 · 0 评论 -
最大权闭合子图——hiho 119周
题目链接: https://hihocoder.com/contest/hiho119/problem/1分析: 给出N个同学,每个同学有一个活力值;给出M项活动,每一个活动也有一个活力值,每一个活动需要k名指定同学参加才能成功举办。每选择一个同学参加活动,则需要耗费这个同学的活力值;每成功举办一个活动,则可以得到这个活动的活力值,求问最大能获得多少活力值。题解:最大权闭合子图: 就是给定原创 2016-10-09 16:52:59 · 388 阅读 · 0 评论 -
最小路径覆盖——hihoCoder 118
题目链接: https://hihocoder.com/contest/hiho118/problem/1分析: 一共有N个旅游景点(编号1..N),由M条单向路线连接。游览线路保证是没有环路的。每一个调查团可以从任意一个景点出发,沿着计划好的游览线路依次调查。每个景点只会有一个调查团经过,不会被重复调查。求所需要的最小调查团数。题解: 将这个问题转换为二分图匹配来做:路径的性质:起点的入原创 2016-10-02 14:42:06 · 903 阅读 · 0 评论 -
网络流 (邻接矩阵)——HDU 2516
题目链接: http://poj.org/problem?id=2516分析: 给出N个商店,M个厂家,K种货物,然后给出N个商店对于K种货物的需求量,和M个厂家对于K种货物的供给量,最后给出没种货物的每一份分别从N个商店运输到M个厂家的花费。求能不能满足着N个商店的需求,若能够输出最小花费,若不能,输出-1/。 一看便是一道网络流的题,辛苦建完边后发现超时了,结果是因为邻接矩阵查询超时的,原创 2016-08-12 21:48:02 · 1212 阅读 · 0 评论 -
最小费用最大流 (建图)——POJ 2135
题目链接: http://poj.org/problem?id=2135分析: 给出N个点和M条路,每条路有一个长度,而且从一个点到另外一个点可能不止一条路,要求从1走到N再走回去,并且同一条路只能走一次,求最短路径的长度。题解:建图:首先,因为有重边的情况存在,所以需要用邻接链表来存储边,然后因为是无向边,所以每条边需要正着建一次,反着建一次。 因为走过去又走回来且不能走相同的路,就相当原创 2016-08-12 15:45:14 · 532 阅读 · 0 评论 -
网络流 (费用流+拆边)——Transportation ( HDU 3667 )
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3667分析: 给出N个城市,M条路,K个货物,每条路的费用系数aia_i和最大运送数量C,求把K个货物从城市1运送到N需要的最小费用,每条路的费用为一个系数aia_i乘以在这条路上运送的货物数量的平方。一看便是一个最大流最小费用,不过费用为动态的,所以我们可以采用拆边的方法,把动态的费用变成静态的原创 2016-08-10 21:48:32 · 621 阅读 · 0 评论 -
二分图匹配 ( 多重匹配&&Hungarian)——Escape ( HDU 3605 )
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3605分析: 有n个人和m个星球,给出n个人对于m个星球的态度(0为不适合居住,1为适合),再给出m个星球最大能居住多少人,要求判断这n个人能否都居住到自己喜欢的星球。 这是一道多重匹配的二分图,改改匈牙利算法就能过。(开始直接上了网络流ISAP,结果直接TLE,T ^ T)多重匹配匈牙利算法原创 2016-08-10 15:06:53 · 508 阅读 · 0 评论 -
费用流+建图——Teamwork ( HDU 4494 )
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=4494分析: 给出n个仓库和m种工人,每个仓库有一个坐标和开始建造的时间与建造所需要的时间,并且建造每个工厂对m种工人的需求量是不一样的。时间从0开始,要求每到达一个工厂的开始建造时间,工厂必须开始建造,工人从一个工厂到另外一个工厂的时间花费等于两个工厂间的直线距离,最开始从原点(0,原创 2016-08-28 10:24:56 · 1023 阅读 · 0 评论 -
网络流 (基础学习)
网络流流网络G(V,E)是一个有向图,其中每条边( u, v )∈E 均有一非负容量 c( u, v ) ≥ 0,规定:若 u , v ∉E,则 c( u, v ) = 0。网络中由两个特殊点: 源点S和汇点T网络中的边相当于是粗细不同的水管,c( u, v ) 相当于是水管的直径。流网络G的流是一个实值函数 f : V×V -> R,且满足下列三个性质: (1)容量限制:对于∀原创 2016-07-27 13:59:29 · 992 阅读 · 0 评论 -
网络流 ( 最小费用最大流 )——Going Home ( HDU 1533 )
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1533分析: 给出一个网格图,H代表房子,m代表人,两者数量相等,人每移动一格花费1$,求所有人走到房子里所需要的最小花费。利用最小费用最大流来做。题解:建图: ①从S点到每个人建边,容量为1,费用为0; ②从每个人到每个房子建边,容量为1,费用为曼哈顿距离; ③从每个房子到T建边,容量为原创 2016-07-27 21:33:57 · 801 阅读 · 0 评论 -
网络流 ( ISAP+建图 )——A Plug for UNIX ( POJ 1087 )
题目链接: http://poj.org/problem?id=1087分析:给出k个设备,每个设备对应一种插头,再给出n种插板(每种一个)和m种适配器(每种数量无限),只有插头插板相同编号才能插入,适配器可以转换插头编号,求最少由几个设备插不上。题解: 因为输入的设备名称和插头插板都是字符串所以,需要用到map转换乘数字。从S建立到k个设备的边,容量为1; 从k个设备建立到其对应插头的边原创 2016-07-27 17:20:58 · 393 阅读 · 0 评论 -
最小割——POJ 3469
题目链接: http://poj.org/problem?id=3469题意: 给出A,B两个内核,给出N个进程,每个进程在不同的内核花费不一样,再给出M个任务,每个任务是a,b两个进程在交换数据,如果在同一内核就不需要额外花费,如果在不同内核则需要额外花费。求N个进程都跑起来并且满足M个任务的条件下的最小花费。分析: 先不考虑M个任务,我们发现每个进程要么属于A,要么属于B,我们可以类比网络流原创 2017-03-10 17:36:23 · 685 阅读 · 0 评论