费用流
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【Atcoder Grand Contest 043】【AGC043】F - Jewelry Box(对偶原理)(费用流)
传送门做法大概是官方题解,叙述和变量定义略有不同。题解:首先考虑解决一组询问,设询问参数为 AAA。那么考虑在每家店中选择了 AAA 件物品,怎么验证能否满足限制。稍微用一下脑子就会发现,直接对每家店选出来的物品按 SSS 排序,然后按顺序分别放到各个盒子里面,直接 checkcheckcheck 每个盒子是否满足条件,如果不满足,则不存在任何一种分配方案满足条件,证明就是xjb贪心,...原创 2020-03-24 19:38:05 · 898 阅读 · 0 评论 -
【NOI2019】序列(模拟费用流)(可删堆)
传送门题解:第一次凭本事做出 NOI 的 T3 。首先有一个非常显然的费用流建模如下,边用二元组 (cap,cost)(cap,cost)(cap,cost) 表示:SSS 向 S′S'S′ 连 (K,0)(K,0)(K,0) 。 S‘’S‘’S‘’ 分别向 iii 点连 (1,ai)(1,a_i)(1,ai) ,iii 点向 i′i'i′ 点连 (1,0)(1,0)(1,0),i′i...原创 2020-03-08 12:09:49 · 461 阅读 · 0 评论 -
【BZOJ4261】建设游乐场(费用流)
传送门没有题解。转化成要尽量少的格子是直的,然后就和这道题一样了:here代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inline char gc(){ static cs int Rlen=1<<22...原创 2019-11-01 16:43:50 · 404 阅读 · 0 评论 -
【SNOI2019】通信(分治优化建图)(费用流)
传送门题解:首先这道题的费用流模型是很明显的。直接建图边数是O(n2)O(n^2)O(n2)的听说能过???但是实际上可以直接分治,然后将aaa值拿出来排序去重,然后排成一排相邻两点连费用为绝对值之差,容量无限的边。然后当前分治区间所有点向自己的aaa值连边,按照它是前半还是后半分别连入边和出边。当然这个也就很显然地可以线段树优化建图了。代码:#include<bits/...原创 2019-10-16 20:53:22 · 155 阅读 · 0 评论 -
【BZOJ3291】Alice与能源计划(贪心)(匈牙利算法)(模拟费用流)
传送门题解:首先把所有已经修建好了的塔的代价加到答案里面,然后代价取负。这样就是最小化所有选择了的塔的代价。显然的费用流的模型。同时显然直接跑费用流会T掉,考虑到我们实际上可以直接贪心如果一个代价小的塔能够选就直接选上。那么我们不需要退流,需要考虑如何判断这个塔能不能选。直接匈牙利即可。代价相同的先选小的即可保证字典序最小。代码:#include<bits/stdc++....原创 2019-10-14 17:15:42 · 179 阅读 · 0 评论 -
【BZOJ2034】[2009国家集训队]最大收益(模拟费用流)(贪心)
传送门题解:首先注意到是一个很显然的二分图最大权匹配模型。但是又不可能把图建立出来跑费用流,复杂度不允许。考虑一个贪心,从价值大的开始考虑,能放就放,最终得出的一定是最优解,正确性可以类比费用流来证明。于是现在问题就是如何判断当前考虑的这个元素是否能放下。首先我们考虑把所有能放的尽量放到靠前的位置。显然如果全部放下,可能访问的位置也只有O(n)O(n)O(n)个,把这nnn个位置处理出...原创 2019-10-14 14:07:17 · 224 阅读 · 0 评论 -
【BZOJ4849】[Neerc2016]Mole Tunnels(模拟费用流)
传送门题解:非常显然的费用流模型。动态加边也显然不能直接用SPFA跑。由于边容量无限,直接维护流量即可。一个显然的性质就是不可能取消之前产生的匹配,所以直接维护子树内部距离自己最近(这里最近定义为代价最小)的有容量的点的方向,由于是一棵完全二叉树,树上路径长度为O(logn)O(\log n)O(logn),直接暴力增广维护流量即可。如果不是完全二叉树的话就需要链分治+线段树搞了。...原创 2019-10-14 11:42:54 · 279 阅读 · 0 评论 -
【LOJ574】「LibreOJ NOI Round #2」黄金矿工(模拟费用流)(链分治)(线段树)
传送门题解:很容易看出这道题的费用流模型,由于是在线修改,所以显然我们要支持动态维护流量和费用。其实模拟费用流最容易犯的错误就是没有考虑退流我就奇了怪了这题单点修改区间max,怎么没人写ZKW线段树维护流量还是很简单的,显然我们只需要维护每个点向下流了多少,也就是它能向上反悔多少(显然本身能够向下流的就是无穷大),直接树链剖分支持一下链加即可。考虑简化一下问题,由于一个矿工和一块黄金...原创 2019-10-11 19:22:00 · 797 阅读 · 1 评论 -
【ZJOI2013】防守战线(线性规划)(对偶原理)(费用流)
传送门题解:设sis_isi表示设置炮塔数量的前缀和,则线性规划式子为:limits:sri−sli−1≥di,∀i=1,2,⋯msi−si−1≥0,∀i=1,2,⋯nsi≥0,s0=0minimize:∑j=1n(sj−sj−1)cj=∑j=1nsj(cj−cj+1)\begin{aligned}limits:&&&&...原创 2019-09-16 20:04:01 · 574 阅读 · 4 评论 -
【BZOJ3118】Orz the MST(线性规划)(对偶原理)(费用流)
传送门不是很懂为什么现在找得到的题解全部写单纯形,明明对偶之后是一个很明显的最大费用可行流。。。题解:首先,由贪心可知,树边权值不会减少,非树边权值不会增加。设树边集合为TTT,非树边集合为EEE。设did_idi表示第iii条边的变化量。设j cover ij\text{ cover }ij cover i表示一条非树边jjj两端对应的树上路...原创 2019-09-16 15:47:25 · 622 阅读 · 0 评论 -
【TC SRM 676】Farmville(线性规划)(对偶原理)(二分答案)(无源汇最大费用可行流)
传送门题解:在推线性规划之前,先来看一个东西,无源汇最大费用可行流,也可称为最大费用循环流。这玩意怎么求解,考虑我们实际上是用了若干环来覆盖原图。如果一个点在环上那么其入流等于出流。我们先贪心把所有正权边选上,将其转化为一条负权边,记录一下每个点当前的流量差是多少。然后我们用负权边来把所有点的流量补齐,这样就是最小费用最大流了,实际上一定满流,也就是说最大流流量是确定了的,自己手推一下就...原创 2019-09-15 08:30:17 · 286 阅读 · 0 评论 -
【CodeChef CHEFBOOK】Chefbook(线性规划)(对偶原理)(费用流)(差分约束)
传送门由于有一个判负环的步骤,所以费用流里面求最短路可以直接用Johnson算法。然后我Johnson敲挂了T了五次。。。题解:考虑实际上就是给出了2m2m2m个限制:Li≤pui−qvi≤RiL_i\leq p_{u_i}-q_{v_i}\leq R_iLi≤pui−qvi≤Ri有没有解可以利用差分约束。拆开看一下是一个线性规划:limits:pui−qvi≤Riq...原创 2019-09-14 11:55:45 · 384 阅读 · 0 评论 -
【NOI2008】志愿者招募(费用流)
传送门题解:很裸的费用流。建图也很显然。从源点向第一天连容量为INFINFINF的边,从第n+1n+1n+1天向汇点连INFINFINF的边。然后从第iii天向第i+1i+1i+1天连容量为INF−A[i]INF-A[i]INF−A[i]的边。现在的问题就是,我们需要花一定的代价对流量进行补偿,对于一类志愿者(s,t,c)(s,t,c)(s,t,c),我们从第sss天向第t+1t+1...原创 2019-09-12 21:58:09 · 228 阅读 · 0 评论 -
2018.10.11【SDOI2017】【洛谷P3705】【BZOJ4819】新生的舞会(0/1分数规划)(最大费用最大流)
洛谷传送门BZOJ传送门解析:随便写一发过了样例然后就A了?思路:分数规划的式子都列好了。。。就等你想出验证方法。。。一看这又双叒叕是一个匹配问题。。。还能是什么。。。网络流。然后是男生女生配 (滑稽) 这不是二分图边的最大权匹配吗。。。于是就把问题转化到了最大费用最大流上面。。。我们直接建图源点向每个男生连边,每个男生向每个女生连边,每个女生向汇点连边。以上所有边的边权为1...原创 2018-10-11 20:55:18 · 174 阅读 · 0 评论 -
2018.10.15【BZOJ1834】【洛谷P2604】【ZJOI2010】网络扩容(最大流)(费用流)
BZOJ传送门洛谷传送门解析:残余网络的巧妙利用。。。其实就是那种做过一次就会一类的题。。。有谁想到这道题可以直接利用第一问跑完最大流的残量网络跑费用流呢。。思路:第一问是一个显然的最大流。然而第二问很多人就被卡住了,扩容?还有费用?我们先想一想,扩容怎么处理,我们再建立一个超级源,向111连一条容量为kkk的边,表示这一次需要扩容kkk的流量。然后我们把原来的每条边再残量网...原创 2018-10-15 10:27:48 · 128 阅读 · 0 评论 -
2018.10.10【HDU4322】Candy(最大费用最大流)(建图)
传送门解析:隐藏极深的一个匹配问题。其实就是将糖果和小朋友匹配,问能否满足所有小朋友的需要。思路:看出来是一个匹配问题,那就直接考虑网络流。首先先考虑k=2k=2k=2怎么做显然当k=2k=2k=2时,我们尽量用小朋友喜欢的糖去提升他的快乐值,最后每个小朋友剩的快乐值就只有几种情况,要么差的远,要么刚好满足,要么还剩1。这个可以直接用最大流实现,我们对每个小朋友向汇点连边,容量为⌊...原创 2018-10-10 21:05:32 · 245 阅读 · 0 评论 -
2018.10.19【网络流24题】【洛谷P4016】【LOJ6013】 负载平衡问题(费用流)
传送门解析:这道题其实就是环形的均摊纸牌。但是你毕竟是来练习网络流的所以我们来谈一谈怎么建图跑网络流 吧代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define ll long long#define re register#define pc putchar#define gc getchar#define...原创 2018-10-19 23:19:56 · 196 阅读 · 0 评论 -
2018.10.22【网络流24题】【洛谷P2770】【LOJ6122】航空路线问题(费用流)
洛谷传送门LOJ传送门解析:调了半天最后发现费用流部分一个小细节跪了。。。心态爆炸。。。问题不大思路:首先我们直接找出两条没有重复节点的路径,一条正着输出一条倒着输出就行了。找的话考虑网络流。我们将每个点拆点成两个ai,bia_i,b_iai,bi,为保证每个城市只在路径中出现一次,我们从aia_iai向bib_ibi连一条容量为111的边,但是注意节点111和节点nnn需...原创 2018-10-22 11:50:41 · 213 阅读 · 0 评论 -
2018.10.21【网络流24题】【洛谷P4009】【LOJ6223】汽车加油行驶问题(最短路/费用流)
传送门解析:啊啊啊啊,这道题和网络流关系大吗?大吗?大吗?就算是费用流来做实际上增广的过程也只被执行了一次,本质上仍然是最短路。其实就是跑分层图的最短路,主要说说怎么构建分层图。一看这个kkk不好维护,它对路径的费用及贡献都十分的不可控,由于有一个强制消费机制的存在,我们根本没有办法令kkk在状态中表示一个特定的东西。那么我们令dist[(i,j,k)]dist[(i,j,k)]di...原创 2018-10-21 16:54:09 · 199 阅读 · 0 评论 -
【BZOJ5482】tree(模拟费用流)
传送门解析:虽然听说THUWC讲了模拟费用流,但是L就这么急着让我们了解模拟费用流吗。。。虽然说确实是一个很裸的费用流,但是真没往模拟费用流上面想。然后发现有负环了,打了DijkstraDijkstraDijkstra加势,不知道哪里错了就咕咕咕了。下来知道是模拟费用流之后感觉还挺傻逼的。由于我们确定是一棵完全二叉树了,那么树高就是Θ(logn)\Theta(\log n)Θ(lo...原创 2019-04-05 23:11:34 · 316 阅读 · 0 评论 -
【清华集训2017】【LOJ2331】【洛谷P4003】无限之环(费用流)
LOJ传送门洛谷传送门解析:考虑将所有点交替黑白染色,源点向黑点连边,白点向汇点连边。每个点在四周建立四个点,表示这个位置是否被连接,然后所有挨着的点连边,比如iii上面的点的下标点和iii的上标点连边,iii左边点的右标点和iii的左标点连边。现在我们需要考虑怎么连接iii和iii四周的点。显然初始状态接触的点直接连接费用为000的边。现在对于可以旋转的点分情况考虑:1.单插头类...原创 2019-04-04 19:36:22 · 303 阅读 · 0 评论 -
【校内模拟】fortress(费用流)(一般图最大匹配)
题面见校内OJ4694题解:(费用流or直接建图)+(带花树orTutte矩阵求秩)四种写法我全部写了一遍。由于两种方式建出来的图存在大量3元环,所以带花树求最大匹配收敛贼快,比Tutte矩阵快得多。代码(费用流+带花树):#include<bits/stdc++.h>#define ll long long#define re register#de...原创 2019-09-07 23:31:22 · 226 阅读 · 0 评论 -
【TC SRM 570】CurvyonRails(费用流)
传送门题解:先不考虑那个最小化,如何判断有没有解?将整张图黑白染色,只考虑非障碍格子,源点向每个黑格连容量为2的边,每个白格向汇点连容量为2的边,然后黑格向所有相邻的白格连容量为1的边,很显然有解当且仅当满流。然后我们对于每个格子拆两个点,表示从横向还是纵向来的,格子之间的连边按照方向来,为了表示出代价,源汇连出来的边全部拆成两个,向两个点分别连容量为1的边,然后两点之间连容量为1,代价...原创 2019-09-12 18:44:13 · 495 阅读 · 0 评论 -
【模板】最小费用最大流
参考题目:loj102洛谷P3381解析:以后会更新。另外,dijkstradijkstradijkstra+势的算法,我的代码要开O2O2O2才能过,而且比不开O2O2O2快了将近一倍(听说只有手写堆不会被卡)。如能帮忙卡一下常数,万分感激。代码(SPFASPFASPFA):#include<bits/stdc++.h>using namespace std;#...原创 2018-09-26 15:14:15 · 143 阅读 · 0 评论