图论-网络流
Maxwei_wzj
AFO
展开
-
【POJ1273】Drainage Ditches-最大流问题
【POJ1273】Drainage Ditches-最大流问题原创 2017-01-29 10:27:25 · 358 阅读 · 0 评论 -
【BZOJ3532】LIS(SDOI2014)-最小割+贪心+退流
测试地址:LIS 做法:本题需要用到最小割+贪心+退流。 如果仅仅是求最小代价,就是很经典的模型了,令f(i)f(i)f(i)为以第iii个元素结尾的LIS长度,那么如果有i<j,ai<aji<j,ai<ajif(i)+1=f(j)f(i)+1=f(j)f(i)+1=f(j),就从iii向jjj连一条边,那么每条从一个f(i)=1f(i)=1f(i)=1的点到一个f(i...原创 2018-05-10 10:38:42 · 210 阅读 · 0 评论 -
【BZOJ2229】最小割(ZJOI2011)-分治+最小割(最小割树)
测试地址:最小割 做法:本题需要用到分治+最小割。 暴力算最小割需要算n(n−1)2n(n−1)2\frac{n(n-1)}{2}次最小割,难以接受,这时候就要掏出最小割树这个东西了。 最小割树是一种可以描述所有点对间最小割的结构,构造过程如下: 1.在点集中任选两点x,yx,yx,y,求出它们间的最小割sss。 2.在最小割树中连接边(x,y)(x,y)(x,y),边权为sss。 3...原创 2018-04-26 08:47:30 · 219 阅读 · 0 评论 -
【BZOJ4519】不同的最小割(CQOI2016)-最小割树
测试地址:不同的最小割 做法:本题需要用到最小割树。 看到两两间的最小割,就想到最小割树了,于是仿照BZOJ2229那题建最小割树,最后树上有多少不同的边权就等同于有多少不同的最小割。其实连树都不用建出来,直接用一个数组存储出现的最小割,最后排一次序就行了。 (厚颜无耻的我复制粘贴了BZOJ2229的代码……如果里面有一些奇怪的东西也不要惊讶) 以下是本人代码:#include <...原创 2018-04-26 09:02:15 · 328 阅读 · 1 评论 -
【BZOJ1797】最小割(AHOI2009)-最小割+SCC
测试地址:最小割 做法:本题需要用到最小割+SCC。 首先,根据最大流和最小割的关系不难看出,跑完最大流后没有满流的边都不可能出现在最小割中。 那么对于剩下的边,如果它的两个端点在残余网络中(注意,残余网络是带反向边的)在同一个强连通分量内,很显然它也不可能出现在最小割中(因为割掉这条边没什么意义),否则它就可能出现在最小割中。 而对于一条边,如果它的两个端点在残余网络中分别和源点和汇点在...原创 2018-04-26 12:09:21 · 255 阅读 · 0 评论 -
【BZOJ4554】游戏(TJOI&HEOI2016)-二分图匹配/最大流
测试地址:游戏 做法:本题需要用到二分图匹配或最大流。 注意到一个炸弹能炸到的区域是一行中由硬石头分割成的一段以及一列中由硬石头分割成的一段,那么问题等价于,在同一段中只能有一个炸弹,问最多能放多少炸弹。 我们把一行或一列中由硬石头分割成的连续一段看做点,那么实际上一个可放炸弹的位置就代表一条边,连接它所在的行段和列段,问题就变成,最多能取多少条边,使得每个点至多属于一条边的端点,这显然就是...原创 2018-04-26 15:49:27 · 182 阅读 · 0 评论 -
【BZOJ2756】奇怪的游戏(SCOI2012)-分类讨论+二分+最大流
测试地址:奇怪的游戏 做法:本题需要用到分类讨论+二分+最大流。 首先看到棋盘,先黑白染色,然后我们发现每次操作两个相邻的格子一定是不同色的,意味着黑白格子得到增加的权值和是一样的。那么令xxx为最后得到的数字,num0/1,sum0/1num0/1,sum0/1num_{0/1},sum_{0/1}为黑/白色格子的数量和权值和,有: num0x−sum0=num1x−sum1num0x−s...原创 2018-04-26 17:32:42 · 193 阅读 · 0 评论 -
【BZOJ2095】Bridges(POI2010)-欧拉回路+二分+最大流
测试地址:Bridges 做法:本题需要用到欧拉回路+二分+最大流。 首先回顾欧拉回路的定义:经过图中一条边一次且仅一次的回路。那么如果原图不是欧拉图(即存在度数为奇数的点),则显然不存在这样的回路,否则因为要求最大值最小,我们二分最大的边权xxx,将问题转化为判定性问题。 那么我们现在就要判定,如果只能走风力不超过xxx的边,能不能走出一条欧拉回路。我们知道要走成一个欧拉回路,就是给每条边...原创 2018-04-26 20:05:13 · 221 阅读 · 0 评论 -
【CF498C】Array and Operations-最大流+数论
测试地址:Array and Operations 题目大意:给定一个包含nnn个元素的数列AAA和mmm个数对(ik,jk)(ik,jk)(i_k,j_k),保证ik+jkik+jki_k+j_k是奇数,每次操作从mmm个数对里选一个,然后将AikAikA_{i_k}和AjkAjkA_{j_k}同除一个不等于111的公因数vvv,问最多能执行多少次操作。 做法:本题需要用到最大流+数论。 ...原创 2018-04-27 08:22:24 · 332 阅读 · 0 评论 -
【BZOJ1449】球队收益(JSOI2009)-费用流+拆边
测试地址:球队收益 做法:本题需要用到费用流+拆边。 由于每场比赛只能有一个胜者,不难想到从每场比赛向比赛双方的队伍各连一条容量为111的边,并从源点向每场比赛连一条容量为111的边,这样每个队伍获得的流量就是它赢的场次了。我们先假设一支队伍所涉及的所有比赛它都输了,这种情况下会获得Cix2i+Di(yi+ti)2Cixi2+Di(yi+ti)2C_ix_i^2+D_i(y_i+t_i)^2的...原创 2018-04-27 11:33:15 · 207 阅读 · 0 评论 -
【BZOJ1070】修车(SCOI2007)-费用流+拆点
测试地址:修车 做法:本题需要用到费用流+拆点。 我们很容易想到将技术人员和车匹配起来,但这样有一个问题:当一个技术人员修多辆车的时候,产生的费用不能简单地用相加来刻画。因此我们需要运用一个方法:拆点。 将每个技术人员拆成nnn个点,然后将这些点和车匹配,第iii个点和第jjj辆车匹配表示这个技术人员修的倒数第iii辆车为jjj,就会产生一些费用。我们知道,如果这个技术人员修这辆车的时间为k...原创 2018-04-27 16:49:12 · 267 阅读 · 0 评论 -
【BZOJ2879】美食节(NOI2012)-费用流+拆点+动态加边
测试地址:美食节 做法:本题需要用到费用流+拆点+动态加边。 首先,提交完此题后,本人在BZOJ中达到了150AC,小小地庆祝一下~ 好了,回到题目,我们发现这题除了数据范围,和BZOJ1070完全是一样的,建模方法见我写的BZOJ1070题解。 那么这题数据范围变大后,我们一开始把图都建出来跑的话,显然会超时,因此我们运用动态加边的优化方法,即只有当用到时才把图的对应部分建出来。 一开...原创 2018-04-27 19:49:51 · 218 阅读 · 0 评论 -
【BZOJ1927】星际竞速(SCOI2010)-费用流+拆点
测试地址:星际竞速 做法:本题需要用到费用流+拆点。 分析题目中要求的路径,我们发现在一条满足要求的路径中,除起点那颗不和任何点连通的点外,所有点的入度都是111,那么这些入度从哪里来呢?一是从某个星球飞过来,二是从某个星球跳过来(这话说的……)。因为一开始我们也是从一个星球跳到某个星球上的,所以我们把所有跳的决策都看做从起点跳过去,那么每个点的入度来源就只有两个,一是从某个星球飞过来,二是从...原创 2018-04-28 22:00:08 · 164 阅读 · 0 评论 -
【BZOJ1834】网络扩容(ZJOI2010)-最大流+费用流+拆边
测试地址:网络扩容 做法:本题需要用到最大流+费用流+拆边。 首先第一问直接做最大流就行了,记得到的答案为maxfmaxfmaxf,主要是第二问。我们发现原网络中的边的费用可以用一个分段函数表示,即当流量超过原容量时,费用为超出部分乘上扩容费用,显然我们可以把这条边拆成一条容量为原容量,费用为000的边和一条容量为正无穷,费用为扩容费用的边。这个网络有一个非常明显的问题,那就是它的最大流并不是...原创 2018-04-29 14:21:01 · 151 阅读 · 0 评论 -
【BZOJ3597】方伯伯运椰子(SCOI2014)-01分数规划+SPFA判负环
测试地址:方伯伯运椰子 做法:本题需要用到01分数规划+SPFA判负环。 我们先尝试找到另一种更好的描述压缩和扩容方案的方法,我们发现,实际上压缩就是在退流,扩容就是在增广,那么我们知道,要找到一种方法使得总流量不变,只需要沿着残余网络中的某一个环走就行了。因此一条反向边走一次需要花费a−da−da-d(即退流),一条正向边走一次需要花费b+db+db+d(即增广)。我们又发现,操作次数实际上...原创 2018-05-22 21:01:39 · 189 阅读 · 0 评论 -
【BZOJ2668】交换棋子(CQOI2012)-费用流+拆点
测试地址:交换棋子 做法:本题需要使用费用流+拆点。 容易想到,把全部白色棋子都移动到目标位置的话,剩下的黑色棋子也自然都移动到目标位置了,因此我们只考虑白色棋子。又注意到一枚棋子的移动可以看成一份流量,这样问题就转化成了网络流问题,因此我们要考虑如何将题目中的限制条件表示出来。 注意到,一枚棋子在移动的路径中,交换的次数是它经过的点数−1−1-1,而对每个点的影响是,对于起点和终点使用了1...原创 2018-05-29 17:34:32 · 238 阅读 · 0 评论 -
【BZOJ1934】善意的投票(SHOI2007)-最小割
测试地址:善意的投票 做法:本题需要用到最小割。 大家好,本图论渣渣又来做网络流基础题了…… 尝试把本题转化为最小割模型。首先,从源点向每一个同意的点连一条容量为111的边,从每一个反对的点向汇点连一条容量为111的边。然后对于每一对朋友,如果两人意见不同,那么从同意的向反对的连一条容量为111的边,否则它们应该相互都要连一条容量为111的边。 这个模型有什么意义呢?一般的最小割模型中,我...原创 2018-04-21 21:59:10 · 255 阅读 · 0 评论 -
【BZOJ4823】老C的方块(CQOI2017)-最小割
测试地址:老C的方块 做法:本题需要用到最小割。 看到网格,首先想到黑白染色处理。但是染色之后我们一时还看不出有什么性质,所以我们先分析题目中的条件。 我们考虑这样一个区域:中间是特殊公共边,包含特殊公共边旁的两个格子和它们相邻的格子,共包含888个格子的区域(想象不出来可以在草稿纸上画画)。我们把中间两个格子称为中间格,其他格子称为边缘格,并称一个边缘格属于一个中间格当且仅当它们相邻。我们...原创 2018-04-25 17:12:19 · 201 阅读 · 0 评论 -
【POJ2195】Going Home-最小费用最大流模板题
【POJ2195】Going Home-最小费用最大流模板题原创 2017-01-29 18:38:38 · 521 阅读 · 0 评论 -
【NOI2008T3】志愿者招募-线性规划+最小费用最大流
【NOI2008T3】志愿者招募-线性规划+最小费用最大流原创 2017-03-10 10:53:05 · 656 阅读 · 0 评论 -
【NOI2006T4】最大获利-最大权闭合子图(最大流)
【NOI2006T4】最大获利-最大权闭合子图(最大流)原创 2017-03-11 17:15:27 · 466 阅读 · 0 评论 -
【NOI2009T4】植物大战僵尸-最大权闭合子图+拓补排序
【NOI2009T4】植物大战僵尸-最大权闭合子图+拓补排序原创 2017-03-11 17:24:46 · 514 阅读 · 0 评论 -
总结:最大权闭合子图
总结:最大权闭合子图原创 2017-03-11 17:45:14 · 1005 阅读 · 0 评论 -
【BZOJ3996】线性代数(TJOI2015)-最小割
【BZOJ3996】线性代数(TJOI2015)-最小割原创 2017-03-21 17:59:37 · 539 阅读 · 0 评论 -
【BZOJ3993】星际战争(SDOI2015)-二分答案+最大流
【BZOJ3993】星际战争(SDOI2015)-二分答案+最大流原创 2017-03-23 18:37:12 · 495 阅读 · 0 评论 -
【HDU3488】Tour-最小费用最大流
【HDU3488】Tour-最小费用最大流原创 2017-04-03 22:22:18 · 446 阅读 · 0 评论 -
网络流24题解题总结(更新中)
目录目录前言最大流问题飞行员配对方案问题最小路径覆盖问题魔术球问题圆桌问题最长不下降子序列问题试题库问题星际转移问题最小割问题太空飞行计划问题方格取数问题费用流问题餐巾计划问题航空路线问题软件补丁问题数字梯形问题运输问题分配问题负载平衡问题深海机器人问题最长k可重区间集问题最长k可重线段集问题不可做问题机器人路径规划问题原创 2018-01-19 11:25:28 · 657 阅读 · 0 评论 -
【BZOJ4819】新生舞会(SDOI2017)-01分数规划+费用流
测试地址:新生舞会 做法:本题需要用到01分数规划+费用流。 首先看到题目中那个式子,就差不多能想到01分数规划了。按照套路处理:二分比值CCC,转化为判定性问题,即存不存在大于CCC的比值,把分母乘到另一边,再减回来,得到∑Ai−C⋅Bi&gt;0∑Ai−C⋅Bi&gt;0\sum A_i-C\cdot B_i>0这个式子,在这道题中,就是按边权为Aij−C⋅BijAij−C⋅BijA_{i...原创 2018-04-10 15:36:40 · 261 阅读 · 0 评论 -
【BZOJ3144】切糕(HNOI2013)-最小割
测试地址:切糕 做法:本题需要用到最小割。 每个坐标上选一个高度,我们可以把一个坐标拆成R+1R+1R+1个点组成的顺次相连的链,中间的边权为原来的点权,然后从源点连向每条链的链头,从每条链的链尾连到汇点。 当我们切掉一条边,表示我们选择这条边表示的高度。那么怎么体现相邻坐标高度之差不超过DDD这个限制呢?我们知道这个条件等价于对于每个坐标,如果取了高度hhh,那么相邻坐标不能取高度h−Dh...原创 2018-04-22 17:48:27 · 243 阅读 · 0 评论 -
【BZOJ3630】镜面通道(JLOI2014)-最小割+计算几何
测试地址:镜面通道 做法:本题需要用到最小割+计算几何。 首先根据一个神奇的物理学定理:水能通过的地方,光就能通过,所以我们要求的就是AB和CD所属的平面区域连通,继而就是求上边界和下边界不能通过元件连通。因此我们在连通的两个元件之间连边,要求至少要去掉多少个点使得两个点不连通,我们发现这就是一个最小割,然而是对于点的最小割。对此我们把一个点拆成两个点,分为入点和出点,并将所有涉及该点的入边连...原创 2018-04-23 11:24:08 · 196 阅读 · 0 评论 -
【POJ1149】PIGS-最大流+优化建模
测试地址:PIGS 题目大意:有mmm个猪圈,每个猪圈内有一些猪,有nnn名顾客陆续到来,他们每个人能够开一个集合内的猪圈,并且能从这些猪圈中买走至多BiBiB_i头猪,在这个时候,我们还能对这些猪圈内的猪进行调动,每个猪圈内可以装无穷多头猪,问最多一共能卖出多少头猪。 做法:本题需要用到最大流+优化建模。 看到这题,一个很显然的思路是,对每一天建出mmm个点表示这一天各猪圈内的猪,然后各种...原创 2018-04-30 09:20:15 · 181 阅读 · 0 评论 -
【BZOJ3876】支线剧情(AHOI&JSOI2014)-有上下界费用流
测试地址:支线剧情 做法:本题需要用到有上下界费用流。 我们发现题目要求的就是,以点111为源点,所有其他点为汇点的最小费用可行流,每条边的流量必须在区间[1,inf)[1,inf)[1,\inf)内,这就是有上下界的可行流了。 我们先讨论无源汇的可行流(循环流)要怎么做,由于每条边的下界的存在,那么这条边的两个端点就有必要的出流量和必要的入流量,我们可以建一个超级源点SSS和一个超级汇点T...原创 2018-04-30 11:54:30 · 367 阅读 · 0 评论 -
【BZOJ1391】Order(CEOI2008)-最小割
测试地址:Order 题目大意:有NNN项任务和MMM种机器,每项任务都有若干道工序,每道工序需要使用一种机器,完成第iii项任务的所有工序就能拿到CiCiC_i的报酬。对于机器可以租用或者购买,租用时只能用于某一项任务的某一道工序,用于不同位置时租金可能不同。而购买是一次性的,只要买下来,所有用到这台机器加工的工序都能做,而只需付一次的钱。现在给你这些信息,问能得到的最大利润是多少。1≤N,M...原创 2018-04-24 08:18:03 · 181 阅读 · 0 评论 -
【POJ3155】Hard Life-01分数规划+最小割
测试地址:Hard Life 题目大意:有一个无向图,要从里面选出一个子图,使得边数和点数的比最大,输出一个合法方案。 做法:本题需要用到01分数规划+最小割。 首先要求比值最大,我们立刻想到01分数规划的套路,二分比值,这样就变成判定性问题:存不存在一个子图使得|E|−k|V|>0|E|−k|V|>0|E|-k|V|>0。 怎么样选出一个合法的子图?注意到,如果我们选了一条边...原创 2018-04-24 10:48:38 · 429 阅读 · 2 评论 -
【BZOJ4873】寿司餐厅(六省联考2017)-最小割
测试地址:寿司餐厅 做法:本题需要用到最小割。 首先,仔细看题,计算价钱中的ccc是种数而不是个数,那么我们发现每种贡献都仅会被计算一次,考虑把这些东西建成点,于是就变成了选点问题。 我们发现有以下一些限制条件: 1.如果要选区间[l,r][l,r][l,r],必须同时选区间[l,r−1][l,r−1][l,r-1]和[l+1,r][l+1,r][l+1,r]。 2.如果要选第iii种寿...原创 2018-04-24 20:37:30 · 243 阅读 · 0 评论