
网络流
文章平均质量分 85
qkoqhh
这个作者很懒,什么都没留下…
展开
-
hdu 1956
学欧拉图过程中就遇到了混合欧拉的判定。。然后难度一下子上去了。。这个sigthseeing tour是道很经典的题。。我初学网络流的时候,还有hdu、poj、白书上好像都有。。然后大致思路是酱紫的:先判断是否连通。。然后在判断入度和出度差为奇数的点,有的话肯定是没有欧拉回路的,然后有向边可以不管,无向边暂时随机定向,剩下的问题就是如何吧原创 2017-11-25 20:32:22 · 283 阅读 · 0 评论 -
hdu5889(最短路+最小割)
emmmm这个跑个最短路。。然后dfs跑出最短路径树直接把树上的边都拿来重建图然后跑最小割就可以了。。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃...原创 2018-08-10 01:34:39 · 224 阅读 · 0 评论 -
nowcoder多校6G(最小割理解+dfs)
这个题出得比较新颖的。。简单地考验对最小割的分析。。感觉今年区域赛也可能会出这种。。首先在完全图上跑最大流其实也即跑最小割。。。然后将s和t放在两旁可以发现割中间点之间的边显然是没什么太大帮助的。。所以只能割连s的所有边或者连t的所有边。。然后可能会有个顾虑就是中间点之间的边会远远小于割去的边,其实边权是由距离形成的所以边权差并不会太大。。然后问题就变成了求每个点到所有点的距离和。。这个优...原创 2018-08-10 20:12:21 · 175 阅读 · 0 评论 -
bzoj1061(费用流解线性规划)
这个题比较套路。。积累下来。。。参考https://www.cnblogs.com/GXZlegend/p/7043554.html还是很好理解。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ...原创 2018-08-20 02:13:46 · 394 阅读 · 2 评论 -
cf708D(循环流+费用流)
这个题算是比较经典了。。首先要解决流量不平衡的问题,这个可以用循环流解决,对于那些流量不平衡的点,分别向S和T连边获取额外的流量,然后跑满流就可以解决不平衡的问题了。。然后对边, 如果没超容量就向普通边一样连边,容量为还可以流的流量,费用为1;再设一条容量无限的边,费用为2,代表容量和流量同时更改;对流量减少的操作,可以连反向边,容量为原流量,费用为1,代表撤销操作如果超容量,就先手动...原创 2018-08-17 16:24:13 · 643 阅读 · 0 评论 -
2014西安现场赛C(最大密度子图->分数规划+最大权封闭子图)
题目链接:http://codeforces.com/gym/100548这个题还是比较好的。。首先把能形成逆序对的点连边,发现题目要求的,其实是一个最大的子图密度。。然后很容易联想到封闭子图,然而密度是用除法表示的。。因此需要分数规划一下,令二分答案为g,要求的是ΣV-gΣE=0的解。。(V代表边集,E代表点集)这样可以构造出封闭子图了,把每个逆序对代表的边看成点u,将源点与每个...原创 2018-08-27 19:02:29 · 332 阅读 · 0 评论 -
poj3155(最小密度子图)
这个题思路是一样的。。直接分数规划跑最大权封闭子图,然后麻烦的是输出方案。。当求出答案之后我们是不能在原图上跑bfs求方案的,因为原图的最小割跑出来就是0,也就是说我们在这个图上的最大权封闭子图可以是空集。然后就会出现一些时候方案是空的情况。。这个时候把得到的最优分数减去一个eps,那么封闭子图的最大权就大于0了,排除掉空集的情况跑bfs就是最优方案了。。好坑。。。 ...原创 2018-08-28 17:49:44 · 529 阅读 · 0 评论 -
最大权封闭子图证明及方案输出
这里复现胡伯涛的论文《最小割模型在信息学竞赛中的应用》的证明给定一个有向图G(V,E),对一个子图,若满足对,必有,我们称为G的一个封闭子图求最大权封闭子图的过程如下:对点权为正的点u,S与u连边,容量为权值对点权为负的点v,v与T连边,容量为权值的相反数对原图G中的所有边<u,v>,u与v连边,容量为无穷设最小割为c[S,T]c[S,T]为简单割证明:...转载 2018-08-28 19:29:47 · 428 阅读 · 0 评论 -
uva7264(最小割)
第一次体验了一番过金牌题拿铜。。看到题目其实先想到的是最大权封闭子图,以此出发我们把图一步步完善。。PS:写博客的时候发现自己的建图完全反过来了,然而这并不影响答案。。因此S和T反过来了,T就表示最大权封闭子图了。。首先最大权封闭子图只考虑到了依赖关系和代价,而这题是必须要选一个,没有收益,为了选那个必选的,我们可以设那个必选点的收益为正无穷,即该点向T连容量为无穷的边。。然后考虑...原创 2018-08-29 19:10:43 · 368 阅读 · 0 评论 -
hdu5520(费用流)
这个题可以看作用一些路径对网格进行覆盖,那么建图的思路也就有了。。像最小路径覆盖一样拆成出点和入点,然后把原图的边加上去,考虑到奇数只进不出,偶数只出不进,那么把S连向奇数点,把偶数点连向T,配对的问题就解决了。。然后还有用环覆盖的问题。。由于环上的点和路径上的点一样有入有出,所以只要把空点的入点和出点,分别连向S和T就可以了。。 /** * ┏┓ ...原创 2018-09-04 14:04:51 · 231 阅读 · 0 评论 -
SPOJ OPTM(最小割)
这个首先是可以安位考虑的,按位拆完之后变成01,那么有贡献的边必定是01边,这个符合割边的定义,那么就转化成求最小割了。。由于确定的点不能改变,所以他们按照01分别向S和T连容量为无穷大的边,原图的无向边拆成2个有向边,容量为1,这样就能求最小值了。。然后对方案的要求是点权和最小,那么就是在同取1和0的情况下要取0。。这个。。直接把原图的流量扩容,然后往1代表的点集连一个容量为1的边,这样...原创 2018-09-15 02:49:30 · 185 阅读 · 0 评论 -
焦作网络赛F(k可重区间集问题)
这个在网络流24题中出现过的(然而窝并没有想起来)显然先将区间离散化再说然后建图方式是从i到i+1连容量为k费用为0的边,对每个区间[l,r]从l-1到r连容量为1费用为该区间价值的边(看做这个区间是从l-1的点接过来),然后跑最大费用流即可。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ...原创 2018-09-27 19:10:59 · 165 阅读 · 0 评论 -
bzoj1061(k可重区间集)
上次的做法是线性规划:https://blog.youkuaiyun.com/qkoqhh/article/details/81844977然而还是不能够很好地理解线性规划,因此再看了一下发现其实是k可重区间集问题。。那么建图方向就有了。。然而这个题比较特殊,只有下界没有上界,想跑上下界也不行了。。因此可以把容量取反,下界就变成上界了。。然后由于网络流只接受正数流,因此要把取反之后的容量加上inf...原创 2018-09-29 13:44:12 · 225 阅读 · 0 评论 -
zoj2676(网络流+分数规划)
题意:求一个割集使得1和n之间不连通,且割集的边权与边数目之比最大比值问题显然需要分数规划,设二分枚举的分数为t,那么就把原题的边权改成v-t来跑最小割判断正负就行了。。考虑到网络流只接受正边权,我们把负边权先去掉再去跑最小割,而显然负边权是一定要取的(因为只要让最终结果小于0),所以跑完最小割再把负边权加上然后去判正负就可以了。。。 /** * ┏┓...原创 2018-10-21 21:31:53 · 295 阅读 · 0 评论 -
NEERC16D/bzoj4842(费用流解线性规划)
直接给出约束条件等价于在最前面加个0=0作差得然后+1为入,-1为出,直接连边跑费用流就可以了。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ...原创 2018-12-04 21:08:09 · 411 阅读 · 0 评论 -
2016ECFinal J(无源汇上下界费用流)
题目链接:http://codeforces.com/group/Us3rfLfgWv/contest/101194题意:给定4个插头,如题图示,每个格子可以填一个插头或者不填,但一些格子一定要填入插头(下称关键点)。问能不能成若干个完整的回路,如果可以,输出最大价值。回路穿过格子时会产生相应的价值。想了好久。。一个显然的性质是一个格子如果加插头,只能在纵向上和一个格子相连,在横向上和...原创 2018-12-13 21:09:58 · 358 阅读 · 0 评论 -
luogu3558(最长k可重区间集问题)
看起来是个经典的题型,得积累起来。。。建图方式也是相当神奇。。离散化区间之后直接从i向i+1连容量为k费用为0的边,对于每个区间,从l向r连容量为1费用为区间长度的边然后直接跑最大费用流即可。。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ...原创 2018-05-15 19:48:51 · 244 阅读 · 0 评论 -
luogu2274(网络流)
算是一个比较经典的模型了,记录一下吧。。。思路就是先来一波黑白染色,建立二分图,然后假设取了所有数,然后再将源点和白点相连,容量为方格数,黑点和汇点相连,容量为方格数,相互影响的黑白点也相连,容量无穷。。然后答案就是总数减最小割了。。其实这个建模方式是和最大权封闭子图如出一辙的。。都是假设全部取然后再求出由于限制条件产生的最小代价。。。/** * ┏┓ ┏┓ * ...原创 2018-05-11 20:46:04 · 522 阅读 · 0 评论 -
bzoj1001(网络流+对偶图)
这道算是比较正宗的对偶图了。。题意很明显是求最小割,然后由最大流最小割定理又可以转化成最大流。。然而如果直接跑ispa明显会tle,10^6个点呢。。那最大流要怎么求呢。。这就是对偶图的一个经典应用了。。http://blog.sina.com.cn/s/blog_60707c0f01011fnn.html对偶图概念和在最大流上的应该这篇文章讲的还算蛮清楚,其实就是对偶图上的边代表了从哪阻断原图上...原创 2018-03-04 14:10:19 · 367 阅读 · 0 评论 -
loj115(无源汇有上下界可行流)
网络流貌似没学深啊。。然后这应该就是所谓的循环流吧。。解决的方案是,先把边拆成必要边和非必要边即把容量拆成lower和upper-lower这2条边,显然我们要让必要边跑满流,所以可以考虑对每条必要边进行如下处理:添加一个源点S和汇点T,设必要边为x->y,容量为v,则将这边转化为S->y容量为v和x->T容量为v,判断满流即可。。然后对非必要边,直接从x向y连就可以了,容量...原创 2018-04-02 14:17:01 · 273 阅读 · 0 评论 -
loj101(ISAP模板)
第一道loj。。上面的题质量还不错啊,可以多做做。。主要是ISAP模板啦。。/** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ *原创 2018-04-02 12:39:20 · 188 阅读 · 0 评论 -
loj117(有源汇有上下界最小流)
https://www.cnblogs.com/kane0526/archive/2013/04/05/3001108.html关于有源汇有上下界最小流这篇文章讲得挺好建图方式是:把每个边拆成必要边和非必要边,对必要边<i,j>,直接超级源点向j连边,i向超级汇点连边,然后先跑一遍费用流,再往T向S连边,再跑一次费用流,把2次的费用加起来得到结果。。。其实一般来讲将原图...原创 2018-04-06 16:55:24 · 321 阅读 · 0 评论 -
loj116(有源汇有上下界最大流)
这个问题其实是能转化成无源汇有上下界最大流,在原图基础上加一条从t到s的无限容量的边,就能转化成循环流了。。按无源汇有上下界最大流建图跑最大流判断能否达到下限的要求,此时整图应形成了循环流,而t到s的流量代表了从s到t的总流量(如果没有t到s的边的话)那么去掉t到s,还剩余一些自由流量,在原有流量的基础上再将自由流量跑满即可。。/** * ┏┓ ┏原创 2018-04-06 16:37:00 · 464 阅读 · 0 评论 -
bzoj2502(有源汇上下界最小流)
其实每个边的下界为1,上界无穷,每个流量代表一次滑行,这样就是求有源汇上下界最小流了。。。所以为什么在有人跑了0ms的情况下还放了10s的时限。。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ *...原创 2018-04-06 17:39:22 · 261 阅读 · 0 评论 -
loj102(费用流模板)
不管怎么说,模板才是最重要的!!!/** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ *原创 2018-04-19 22:17:29 · 390 阅读 · 0 评论 -
luogu2764(最小路径覆盖->最大流)
看起来这么专有的名词应该是最大流的一个典型应用吧。。积累下来。。这个要求的是最小的方案数。。然而最大流是要跑最大的丫。。所以肯定是把总的点数去减最大流了。。于是很明白最大流其实就要表示那些不能表示一条路径的点。。一般来说这些点应该是路径中间的点。。那么剩下起点和终点要留下谁不跑流量呢?根据有向边来看。。应该就是留下终点了吧。。那么建图方法就很明确了。。将流量跑向有向边指向的那个点。原创 2018-05-08 21:17:44 · 239 阅读 · 0 评论 -
luogu2765(二分答案+网络流/贪心)
没贴网络流标签绝对想不到网络流orz。。或许会想到贪心去莽一发?先说说网络流的。。其实很容易想到把每个数字作为一个点,对能构成平方数的数对连边,这样一来一根柱子就能看作一个路径,然后就变成了最小覆盖路径了。。。所以对给定答案是能判断其最大柱子数,所以很容易想到用二分去做。。。事实上好像用枚举会更快?因为重建图重跑一遍最大流的时间比相比于枚举实在是要大得多了。。不过这种感觉蛮难写的。原创 2018-05-08 23:35:29 · 303 阅读 · 0 评论 -
计蒜客某赛F(最大权封闭子图)
题目链接:https://nanti.jisuanke.com/t/26172裸最大权封闭子图,然而忘了qaq复习复习。。这题题意可以作为最大权封闭子图的理解,就是有若干产品,每个产品有对应价值 ,有若干原料,每个原料有对应费用,产品需要先获得相应原料和产品才可获得,即有一定依赖关系,然后就是要最大利润了。。解决方案:源点指向所有产品,容量为价值,所有原料指向汇点,容量为费用,对每原创 2018-04-24 23:05:04 · 201 阅读 · 0 评论 -
luogu1251(费用流)
这题显然是费用流啦。。然后关键问题是如何将用过的餐巾重复利用。。然而窝萌知道,流量是不可重复利用的,一个流量是绝对无法当成2个流量用的,也就是说,如果汇点需要sum流量,源点就一定需要给sum个流。那要怎么表示重复利用?手动加无费用流就可以了。。无论是用餐巾还是新餐巾,当天剩余餐巾数是一定的,那把每天拆成2个点,一点代表新餐巾,一点代表旧餐巾,那么直接从源点向旧餐巾点流相应的免费流量,就可原创 2018-04-26 12:26:46 · 155 阅读 · 0 评论 -
luogu2766(dp+网络流)
第一问dp就不说了。。然后这个网络流的建图思路就有点神奇了。。第一问的LIS用的是传统的N^2dp做。。然后可以算出以每个数为结尾的LIS,记为dp[i],将第一问答案记做s然后其实答案最多就是dp[i]等于s的个数,然后剩下的就是看他们能不能找到自己前面的子列了。。首先考虑找s-1位置的数字,显然是要找dp[i]==s-1的数字,如果这个i找不到s位置的数字,那么这个数还是否有用呢?答案是没有。...原创 2018-05-10 21:27:28 · 213 阅读 · 0 评论 -
luogu2754(并查集+枚举+网络流)
这个题数据小得有点诡异,所以尽量就往比较暴力的方向去想。。一开始有想到二分答案然后拆点建图跑最大流来check,后来发现其实并不用。。只要直接枚举答案即可。。从小到大枚举答案,对一个答案ans,把空间站拆成ans个点,表示每个时刻的空间站,然后根据飞船跑的顺序依次建边,直接跑最大流看是否大于承载人数。。。然后对于答案不存在的情况。。可以用并查集预判一下。。。/**原创 2018-05-05 09:59:59 · 149 阅读 · 0 评论 -
luogu2762(最大权封闭子图+最小割理解)
这个其实就是个裸最大权封闭子图。。然后麻烦的是输出方案。。所以方案应该要如何输出呢?需要我们回归到最小割的定义中来。。https://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html还是这篇文章。。这里有个结论就是最小割源点所在集合为方案。。意会一下感觉好像是对的。。事实上没看严格证明。。所以跑完最小割之后直接bfs找原创 2018-05-05 14:27:16 · 245 阅读 · 0 评论 -
luogu2270(费用流)
求2个不相交的路径,这个算是非常经典的题了吧。。这个有dp和费用流。。先讲讲比较好理解的费用流。。由于每个点只能经过一次,所以拆点限流,不过起点和终点的流量可以为2。。然后2个路径就对应2个流,只要跑最大费用最大流即可。。中间考虑到了可能会有环的情况,其实并不用考虑,因为路径的方向是单向的。。不过输出方案就比较烦。。要根据图的特点去把方案输出来。。/** * ┏┓ ┏┓ *...原创 2018-05-11 17:44:15 · 129 阅读 · 0 评论 -
bzoj3876(有源汇上下界费用流)
这个可以这样想,由于每个点都可以立刻结束回到原点,所有可以把所有节点都当成汇点,把1号点当成源点,然后直接跑费用流,然而由于要满足每个边都要跑一次的条件,直接给个下界就可以了。。然后用处理下界的方法建图就可以了。。然而这样直接跑费用流T了(9750ms= =)。。发现建图时容量要么是1(必要边),要么是无穷,所以可以考虑在建图上优化一下。。处理必要边时可以先把费用加上,然后标记入度和出...原创 2018-12-14 13:43:22 · 529 阅读 · 0 评论