最大流
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
zoj2314 Reactor Cooling (无源汇的有上下界的最大流)
上界用ci表示,下界用bi表示。下界是必须流满的,那么对于每一条边,去掉下界后,其自由流为ci– bi。主要思想:每一个点流进来的流=流出去的流对于每一个点i,令Mi= sum(i点所有流进来的下界流)– sum(i点所有流出去的下界流)如果Mi大于0,代表此点必须还要流出去Mi的自由流,那么我们从源点连一条Mi的边到该点。如果Mi小于0,代表此点必须还要流进来Mi的自由流,那么我们从该点连一条Mi原创 2017-11-24 20:13:08 · 502 阅读 · 0 评论 -
CF512C Fox And Dinner(数学+二分图+最大流)
%%%Elijahqi,秒题的神犇。 首先我们发现,如果两个数的和是质数,则一定是一奇一偶,所以环一定是偶环,我们可以根据奇偶性黑白染色,变成一张二分图。题目保证环的大小一定大于等于3,所以每个点的度一定是2。那么我们就可以直接建图跑最大流来判断是否可行了。S向白点建边,容量为2,黑点向T建边,容量为2,白点向能相邻的黑点建边,容量为1。看是否满流即可。原创 2017-12-23 23:07:41 · 387 阅读 · 0 评论 -
loj117 有源汇有上下界最小流(如题)
有源汇有上下界最小流。我们已经可以求出有源汇有上下界可行流一个了,但是他不一定是最小的。怎么求最小的呢?我们知道最后新加的边s->t的流量就是可行流的大小,所以我们就是要最小化s->t的流量。怎么做呢?我们建出超级源汇的求可行流的图,先不加s->t这条边,跑一遍S到T的最大流,然后加上s->t这条边,在残余网络上再跑一遍S到T的最大流,答案就是s->t这条边的流量。(为什么呢?因为我们先不加s->t原创 2017-12-19 15:02:20 · 481 阅读 · 0 评论 -
loj116 有源汇有上下界最大流(如题)
有源汇有上下界的最大流。首先求出一个可行流,然后直接在残余网络上跑一个原图源点到原图汇点的最大流就是答案。(正确性呢,我就胡乱口胡一下。。。记原图的源和汇为s和t,新加的超级源汇为S和T。为了求原图的一个可行流,我们要添加一条边t->s,0,inf,然后像求无源汇的可行流那样建新图,求一个S到T的最大流,看是否满流判断是否存在可行流。如果存在的话,此时新加的那条边的流量就是原图的可行流的大小。(也就原创 2017-12-19 11:42:08 · 1114 阅读 · 0 评论 -
bzoj1822 [JSOI2010]Frozen Nova 冷冻波(计算几何+二分答案+最大流)
白天写的心不在焉的…一堆奇怪的错误。写个规范点的果然就好多了qaq首先就是巫师向他能吃到的小精灵建边,小精灵向汇建边,容量均为1.然后二分时间,算出每个巫师能吃几个精灵,由源向巫师建边,容量为算出的该巫师能吃几个精灵。如果小精灵都被吃了则合法。 然后对于一个巫师能否吃到一个小精灵,相当于我们要判断一条线段是否与给定圆相交。注意是线段!所以可能垂线段不是最小距离!需要判断一下垂线段是否与线段相交,如原创 2018-01-02 15:15:09 · 367 阅读 · 0 评论 -
poj2396 Budget(有源汇的有上下界的可行流)
有源汇的有上下界的可行流,加一条边t->s,容量为(0,inf)即可转化为无源汇的有上下界的可行流。原创 2017-12-19 08:20:28 · 426 阅读 · 0 评论 -
bzoj2929 [Poi1999]洞穴攀行(最大流)
裸题。原创 2018-01-02 10:09:15 · 380 阅读 · 0 评论 -
bzoj3504 [Cqoi2014]危桥(最大流)
首先建图很直观:双向边的网络流,危桥容量为1,普通桥容量为inf。s向两个起点建边,容量为往返次数,两个终点向T建边,容量为往返次数。看是否满流。但是这样可能存在a1->b2的流被我们算进了答案,不合法。所以我们要把b1,b2交换一下起终点,再重新跑一遍,看是否还是满流。如果还满流,则一定合法。因为s1->t2存在合法路径,t2->t1存在合法路径,则s1->t1也可以构造出合法路径。#includ原创 2017-12-26 14:48:35 · 336 阅读 · 0 评论 -
bzoj3396 [Usaco2009 Jan]Total flow 水流(最大流)
板子题。原创 2017-12-26 11:43:34 · 346 阅读 · 0 评论 -
bzoj2893 征服王(tarjan缩点+有上下界最小流/费用流)
限制起终点的可相交最小路径覆盖。首先tarjan缩一波点。然后就是个有上下界最小流,拆点,i->i+scc,容量为(1,inf)。其他边都是(0,inf)。 tips:这题蒟蒻有个不是很懂的地方,我的超级汇点T=2001时就会wa,改成2005就可以A了,是我的代码哪里写挂了吗?望神犇指教。或者可以用最大费用最大流,拆点,i->i+scc,容量为1,花费为1的一条边,再来一条容量为inf,花原创 2018-01-07 13:09:19 · 343 阅读 · 0 评论 -
CF498C Array and Operations(数论+最大流)
显然是给出了一张二分图,我们根据奇偶划分即可。然后对于每一种质因数分开讨论,分别建图跑最大流即可。s->白点建边,容量为质因数个数,黑点->T建边,容量为质因数个数,给出的边由白点连向黑点,容量为inf原创 2018-01-07 22:15:37 · 766 阅读 · 0 评论 -
CF976F Minimal k-covering(网络流)
对于K-covering 我们建图:原图的边i->n1+j,容量为1.S->左边的点i,容量为du[i]-K,右边的点j->T,容量为du[j]-K。跑最大流。m-最大流就是答案。没流量的边就是还在的边。我们考虑从大到小枚举K,就可以每次直接在残余网络上给每个点新加1的流量,直接跑即可。 因为最大流最大是m的,而我们最多跑m次。所以复杂度是O((n+m)2)O((n+m)^2)原创 2018-05-02 21:46:46 · 359 阅读 · 0 评论 -
bzoj3130 [Sdoi2013]费用流(最大流+二分)
我们发现对于给定的流,Bob的最优决策就是把p全部分配到流量最大的那条边上。因此Alice的最优决策就是在保证最大流的前提下使得流量最大的边流量最小。我们二分一下这个最大流量即可。注意保留小数是真的【捂脸】,因为你要流量最大的边最小,所以就有可能是小数流量,要注意控制精度。 举个例子:【来自ZYF-ZYF】,流量最大的边最小可以是2.5。原创 2018-02-18 22:24:26 · 293 阅读 · 0 评论 -
bzoj3931 [CQOI2015]网络吞吐量(Dijkstra+最大流)
先Dijkstra求出dis数组,然后判断每条边是否可以经过,如果可以就建边,容量为inf。点权限制,拆点。最大流就是答案了。原创 2018-01-09 23:13:02 · 514 阅读 · 0 评论 -
Codeforces Hello 2018
CF913A Modular Exponentiation(模拟)CF913B Christmas Spruce(树)CF913C Party Lemonade(贪心+dp)CF913D Too Easy Problems(二分答案+贪心)原创 2018-01-09 08:46:46 · 662 阅读 · 0 评论 -
bzoj2095 [Poi2010]Bridges(二分答案+混合图欧拉回路,最大流)
这题题目描述有毒。原题是要求经过每座桥一次且一次。要求经过的最大风力的最小值。我们二分答案,每次就相当于判断一个混合图是否存在欧拉回路。注意如果一条桥断掉了,要直接返回false,因为不可能通过这座桥了。至于如何判断一个混合图是否存在欧拉回路,见这里。原创 2018-01-08 17:22:33 · 377 阅读 · 0 评论 -
poj1637 Sightseeing tour(混合图欧拉回路,最大流)
判断混合图是否存在欧拉回路。首先有关欧拉回路的一些定义: 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。 如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。 具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。有关欧拉回路的一些性质: 以下判断基于此图的基图连通。 无向图存在欧拉回路的充要条件:原创 2018-01-08 16:03:07 · 443 阅读 · 0 评论 -
zoj2760 How Many Shortest Path(Floyd+最大流)
求两点之间边不相交最短路个数。先Floyd预处理两点间距离,然后判断每一条边是否可以在最短路上,如果可以,就建边x->y,容量为1.然后s到t的最大流就是答案。原创 2018-01-08 13:54:49 · 279 阅读 · 0 评论 -
bzoj2756 [SCOI2012]奇怪的游戏(二分+最大流)
首先要二分图染色,我们发现格子个数的奇偶性影响了我们二分图的性质。分类讨论。 如果是偶数个格子,那么黑点白点一样多,记黑点权值和sum1,白点权值和sum2,那么每一次操作是黑白权值和各+1,所以如果最后想所有数都相同,必须sum1和sum2一开始就相同。否则无解。我们还发现偶数个格子时,如果都变成x满足要求,则都变成比x大的数时也一定满足要求。因此我们可以二分一个最小的x,用最大流判满流判是否合原创 2018-01-08 11:01:13 · 351 阅读 · 0 评论 -
poj2289 Jamie's Contact Groups(二分答案+最大流)
老套路了。原创 2017-12-16 20:18:10 · 768 阅读 · 1 评论 -
poj2455 Secret Milking Machine(二分答案+最大流)
二分答案,双向边网络流,反向边容量直接设为val即可。可以选择的边容量为1,跑最大流,看是否满流(是否存在K条路径)。原创 2017-12-24 20:50:52 · 343 阅读 · 0 评论 -
bzoj1305 [CQOI2009]dance跳舞(二分答案+最大流判是否满流)
二分答案,如何判断mid是否合法呢?我们建图,把每个点分成两个点。喜欢点称为a,不喜欢点称为b,男生x喜欢女生y,则建边xa->ya,边权为1,不喜欢则建边xb->yb,边权为1,最多只能k个不喜欢,所以建边xa->xb,边权为k,yb->ya,边权为k。然后源点向所有xa建边,边权为mid,所有ya向汇点建边,边权为mid。跑dinic求出最大流,看是否满流(即是否mid次所有人都分配成功了)。原创 2017-11-23 16:23:27 · 367 阅读 · 0 评论 -
bzoj1066 [SCOI2007]蜥蜴(建图最大流)
把每个点拆成两个点,一个表示进入这个点,记作a,一个表示离开这个点,记作b。a->b,边权为高度,表示最多只有这么多的蜥蜴可以通过这个点。然后任意两个可以互达的石柱x,y,建边bx->ay,边权为inf,建立超级源点,向所有一开始有蜥蜴的石柱建边,边权为inf,建立超级汇点,所有可以跳出地图的点向超级汇点连边,边权为inf。然后跑dinic就好啦。原创 2017-11-23 11:27:22 · 303 阅读 · 0 评论 -
bzoj2502 清理雪道(有源汇有上下界最小流)
原图中的边至少要经过一次,所以容量下界为1,上界为inf,s向所有点连边,容量为[0,inf],所有出度为0的点向t连边,容量为[0,inf]。所以就是求一个有源汇有上下界最小流。怎么求?见这里原创 2017-12-19 22:32:38 · 1044 阅读 · 0 评论 -
poj1273 Drainage Ditches(最大流dinic板子)
Dinic算法的核心就在于多路增广。每次bfs给残余网络分层,然后一次dfs把能增广的全都增广了。复杂度是O(n2m)O(n^2m).原创 2017-11-23 09:18:36 · 315 阅读 · 0 评论 -
bzoj1834 [ZJOI2010]network 网络扩容(最大流+费用流)
第一问就是直接跑最大流。第二问在残余网络上接着建图,对于原来的每条边,再建一条边容量为inf,费用为w。原边费用为0.建立超级源点向1连边,容量为k,费用为0,跑zkw费用流就好啦原创 2017-12-09 22:01:18 · 292 阅读 · 0 评论 -
loj6006「网络流 24 题」试题库(最大流)
判断是否满流即可。原创 2017-12-09 15:02:48 · 256 阅读 · 0 评论 -
loj6004「网络流 24 题」圆桌聚餐(最大流)
s向所有单位建边,所有餐桌向T建边,每个单位向每个餐桌建容量为1的边,跑dinic看是否满流即可。原创 2017-12-08 22:03:26 · 401 阅读 · 0 评论 -
loj6000 「网络流 24 题」搭配飞行员(二分图最大匹配)
求二分图最大匹配裸题。可以建图跑最大流,也可以匈牙利算法。最大流原创 2017-12-08 17:33:23 · 342 阅读 · 0 评论 -
bzoj1189 [HNOI2007]紧急疏散evacuate(二分答案+bfs+最大流判是否满流)
首先bfs处理出每个人到每个门所需的时间。然后二分答案,对于所有人能到的所有门,建边,边权为1,从源点向所有人建边,边权为1,从所有门向汇点建边,边权为mid(最多出去mid个人),dinic跑最大流看是否满流原创 2017-11-23 16:29:19 · 566 阅读 · 1 评论 -
poj1149 PIGS(建图最大流)
这题真的是好妙啊。首先有一种O(nm)个点的比较直观的建图方法:把每个猪圈拆成n个阶段,第i个人买第i阶段的相应猪圈里的猪。第i阶段的猪可以留到第i+1阶段,第i阶段打开的猪圈可以互相流通到下一阶段。源向所有第一阶段的猪圈连边,容量为猪圈大小,所有人向汇连边,容量为这个人可以购买的数量。然后跑最大流即可,应该也能过。 还有一种更好的建图方法:源向所有猪圈建边,容量为猪圈大小。所有人向汇连边,容量为原创 2017-12-20 22:54:43 · 367 阅读 · 0 评论 -
poj1698 Alice’s Chance(最大流)
每一天一个点。原创 2017-12-24 15:34:43 · 269 阅读 · 0 评论 -
CF589F Gourmet and Banquet(二分答案+最大流)
二分答案,每个时间段一个点,每个菜一个点,连边跑最大流,看是否满流即可。原创 2017-12-24 14:50:25 · 347 阅读 · 0 评论 -
CF546E Soldier and Traveling(最大流)
把每个点拆成两个点跑最大流即可。注意a的和可能和 b的和不相同!原创 2017-12-23 22:51:56 · 510 阅读 · 0 评论 -
bzoj3698 XWW的难题(有源汇有上下界最大流)
建图类似poj2396。告诉你每行每列的和,于是我们这样建图:每行是一个点,源向他连边,每列是一个点,他向汇连边,对于a[i][j],建图i->j+n,容量为(下取整,上取整)。要注意如果原来就是整数,则上下界相同。有源汇上下界最大流做法见:传送门原创 2017-12-22 09:42:18 · 820 阅读 · 0 评论 -
bzoj4200 [Noi2015]小园丁与老司机(dp+记录路径+有源汇有上下界最小流)
这题。。。连想带写一整天gg 首先第一问,是个dp,先把所有点按y为第一关键字,x为第二关键字,从小到大排序,我们把所有y相等的点叫做一层。则一层一层的dp,隔层之间转移可以直接O(1)转移(每个点只能从最多三个点上来),层内可以O(n2)O(n^2)转移(如果不要求记录路径的话,可以做到O(n))。同层怎么转移呢?首先我们有刚进入这一层时各个点的最优值,现在我们要求出从这一层出去的每个点的最优值原创 2017-12-21 16:38:14 · 429 阅读 · 0 评论 -
bzoj1458 士兵占领(最大流)
这题我哪会啊。思路很妙,先把所有能放士兵的位置都放上,看最多能删去几个。每一行可以删去的就是本来可以放的位置数-需要的位置数,如果为负则直接不合法。然后s向行建边,列向t建边,边权都是可以删去的最大个数。如果x行y列可以放,则建边x->y,容量为1,跑最大流即可。求最多可以删去几个点。原创 2017-11-24 17:09:32 · 411 阅读 · 0 评论 -
bzoj1711 [Usaco2007 Open]Dining吃饭(最大流/三分图匹配)
源点向食物建边,食物向牛建边,牛向饮料建边,饮料向汇点建边,把牛拆成两个,保证一头牛只有1会通过。然后dinic原创 2017-11-24 14:25:27 · 599 阅读 · 0 评论 -
loj6015「网络流 24 题」星际转移(枚举+分层图最大流)
首先我们发现答案是具有单调性的。而且每一天似乎只与上一天有关。那么我们可以枚举天数,建分层图,看什么时候可以了就是答案。我们一天一天的增加,每次新建这些边:S向新一天的地球建边,容量为inf,新一天的月球向T建边,容量为inf,上一天的空间站向新一天的空间站建边,容量为inf(表示留在空间站),每艘飞船上一天所在的空间站向新一天会到的空间站建边,容量为飞船大小。(表示可以转运那么多人),然后跑最大流原创 2017-12-12 15:30:42 · 351 阅读 · 0 评论 -
uoj217【UNR #1】奇怪的线段树(优化建图+最小流)
官方题解:http://c-sunshine.blog.uoj.ac/blog/1860首先你需要发现只要覆盖了“自己是黑色节点,且子树内没有其他黑色节点了的点”即可。然后你每次覆盖的一定是一段连续的右儿子+一段连续的左儿子。而且这样是一一对应的。然后我们可以对每个点往可能的后继连边,这样就得到了一张DAG,于是问题转化成最小路径覆盖问题。 带上下界最小流即可。#include <...原创 2018-07-15 22:14:37 · 588 阅读 · 0 评论