
网络流
ナナ色のブランク
这个作者很懒,什么都没留下…
展开
-
Bubble Cup 13 - Finals [Online Mirror, unrated, Div. 1] B. Valuable Paper(二分+二分图最大匹配)
题目链接分析:网络流的题做多了看到这个就明白啥意思了,题意很明显,就是建一个二分图求一个最大匹配,并且要求每条匹配边的最大值最小,而对于最大值最小就二分答案准没错,而考虑一下是否具有单调性,对于答案ans,对于任意大于ans的值val跑出来的完美匹配,所以是具有单调性的。然后问题就被转换成了,若最大边不超过mid,是否存在完美匹配。所以问题就成了一个判定问题,考虑怎么解决这个判定问题,每次二分一个值mid,不通过值大于mid的边增广,这样跑出来的是否是完美匹配。问题就解决了。每次求最大流时不要忘了清空原创 2021-02-22 21:03:24 · 253 阅读 · 0 评论 -
UVA 1515 Pool construction(最小割)
题目链接分析:紫书上的一道例题,大意就是让你用最小的花费把草和洞分割开。为了让所有的草以及洞连通,我们引入源点S和汇点T,与S相连的都是草,与T相连的都是洞,草和洞是可以相互转化的,所以把草向S连一条容量为d的弧,表示要让草转化成洞需要割掉这条弧,T的也同理。但是我们还要安放栅栏在草和洞之间,所以我们每个结点要向四周相邻结点连一条容量为f的弧,表示如果割掉这一条弧需要支付f的费用,相当于在两个结点之间安放一个栅栏,画画图就可以理解。#include<bits/stdc++.h>#defin原创 2021-02-21 18:29:07 · 119 阅读 · 0 评论 -
hdu 3251 Being a Hero(最小割+割边集输出)
题目链接分析:感觉对最小割还是不是很理解,这个题因为标签就是最小割,所以直接用最小割去想了,能做出来,如果不看标签还真不一定。首先题目中很明显有两个集合,一个是你的城市,一个是国王的城市(不是你的城市的都是国王的城市)。而题目要求你做什么呢,就是用最小的花费让这两个集合互不连通,当然你也可以选择将你的城市中的一些城市让给国王,同样你也不再获得这个城市所带来的收益,这不免让人联想到“割”这个概念,由于你的城市可以转换成国王的城市,也就是你可以抛弃掉某个城市,但这样需要一定的花费,所以我们引入汇点T,规定与原创 2021-02-21 18:16:32 · 128 阅读 · 0 评论 -
HDU 3667 Transportation(费用流+拆边)
题目链接题目大意:要从1到n运送k单位货物,每条边都有一个流量限制,和通过这条边要花费一定的钱,这个花费是a*x^2其中a是费用系数,输入中给出,x为通过这条边的流量,求从1到n的最小花费。分析:由于题目中的流量是一种最小性参数,所以普通的最短路径必然是解决不了这个问题。所以就可以想到网络流当中的费用流,要运送k单位货物也就是说流量为k时即可停止增广,然后每次按最短路径去增广,这样增广出来的就是最小费用。然后注意到每条边是有费用系数的且和流量成平方关系,所以拆边,有多少容量就拆成几条边,并且费用各异,原创 2021-02-20 20:16:07 · 167 阅读 · 0 评论 -
UVA 1349Optimal Bus Route Design(二分图最小权完美匹配+拆点)
题目链接题目大意:有这么n个经典,需要指定若干个旅游路线,要求这些路由路线从起点出发后还要再回到起点,且所有路线覆盖全部景点,一个景点最多被一个路线覆盖,要求路线的权值和最小并输出,无解输出N分析:从起点回到起点,这明显是一个圈,要求若干个圈且每个点都恰好属于一个圈,也就是说每个点都有唯一一个后继结点,从后继节点又有后继结点,也就是说每个点都恰好和他的后继结点有一条边相连,而他的后继结点还要和他的后继节点有边相连,也就是说每个点都会恰好选择一个点作为他的后继结点,每个点也都会恰好被一个点选作后继结点,每原创 2021-02-19 10:39:31 · 148 阅读 · 0 评论 -
uva 1658 Admiral(费用流+拆点)
题目链接题目大意:给定一张图,求从1到n两条不相交路径的最小权值和。分析:要求两条不相交路径的最小权值和,很明显跑最短路算法的话可能会有无解情况出现,且答案不一定合法,故考虑网络流算法,题目要求每个点最多被经过一次且每条边也最多被经过一次,给定每条边容量为1,每个点容量也为1,所以每个点要拆成两个点,中间边容量为1,表示每个点最多被选择一次。然后起始点可以被经过两次,所以源点和汇点拆点后中间边容量要为2,表示可以用两次,然后从源点向汇点跑最小费用流。#include<bits/stdc++.h原创 2021-02-18 22:07:47 · 177 阅读 · 0 评论