网络流
_beginend
这个作者很懒,什么都没留下…
展开
-
【hdu 6634 Salty Fish】【最小割+长链剖分】
题意给一棵nnn个节点的有根树,点有点权。有mmm个摄像机,第iii个摄像机会覆盖到以xix_ixi为根的子树中距离xix_ixi不超过kik_iki的点,并且可以用cic_ici的代价使该摄像机无效。问未被覆盖点权和-总花费的最大值。n,m≤300000n,m\le300000n,m≤300000分析首先可以最小割建图:sss往摄像头连流量为费用的边,摄像头往能覆盖的点连流量为i...原创 2019-11-16 11:26:28 · 386 阅读 · 0 评论 -
bzoj 1570: [JSOI2008]Blue Mary的旅行 分层图网络流
题意在一段时间之后,网络公司终于有了一定的知名度,也开始收到一些订单,其中最大的一宗来自B市。Blue Mary决定亲自去签下这份订单。为了节省旅行经费,他的某个金融顾问建议只购买U航空公司的机票。U航空公司的所有航班每天都只有一班,并且都是上午出发当天下午到达的,所以他们每人每天只能坐一班飞机。经过调查,他们得到了U航空公司经营的所有航班的详细信息,这包括每一航班的出发地,目的地以及最多能买到的某原创 2017-09-27 21:50:47 · 323 阅读 · 0 评论 -
bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合子图+拓扑排序
题意链接分析首先按照题目给出的保护关系可以建出来一个DAG,然后就是裸的最大权闭合子图了。但不难发现会出现环的情况,所以要先把图反向然后把不能拓扑排序的点给去掉就好了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using n原创 2017-08-31 20:32:32 · 325 阅读 · 0 评论 -
bzoj 3996: [TJOI2015]线性代数 最小割
题意给出一个N*N的矩阵B和一个1*N的矩阵C。求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大。其中A^T为A的转置。输出D 矩阵B和矩阵C中每个数字都是不超过1000的非负整数。 n<=500分析展开之后不难发现答案就是∑i=1n∑j=1nAi∗Bi,j∗Aj−∑i=1nCi∗Ai\sum\limits_{i=1}^n\sum\limits_{j=1}^nA_i*B_{i,原创 2017-09-16 11:21:36 · 370 阅读 · 0 评论 -
bzoj 1143: [CTSC2008]祭祀river 求最长反链:网络流
题意给出一个DAG,求一个最大的点集满足集合里面的点两两之间不能到达。 n<=100分析一个很详细的题解 vfk关于相关定理的证明 链:是一个点集,满足对于集合里面的任意两点u,v,要么能从u到达v,要么能从v到达u。 反链:是一个点集,满足对于集合里面的任意两点u,v,既不能从u到v,也不能从v到u。现在这题要求的就是最长反链。由定理最长反链=最小链覆盖(每个点至少被经过一次)可得,这题要原创 2017-07-26 10:48:54 · 588 阅读 · 0 评论 -
bzoj 3218: a + b Problem 最小割+可持久化线段树
1原创 2017-07-07 22:07:26 · 340 阅读 · 0 评论 -
bzoj 3168: [Heoi2013]钙铁锌硒维生素 矩阵求逆+构造最小字典序完备匹配
题意给两组向量,每组有n个n维向量。,求一组字典序最小的匹配方案使得把第一组向量的任意一个替换成其对应的向量后满足这n个向量仍然线性无关。 n<=300分析这是14年的集训队论文题。显然第一组向量是n维向量空间的一组基,那么第二组向量显然都可以由第一组向量表示出来。 这里有一个结论,就是若第一组向量的某个向量j可以由第二组向量的某个向量i替换,当且仅当在用第一组向量表示向量i的式子里,j的系数不原创 2017-06-14 20:16:14 · 666 阅读 · 0 评论 -
bzoj 3532: [Sdoi2014]Lis 构造字典序最小割
题意给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。 1 < =N < =700 T < =5,Ai,Bi,Ci<=10^9分析如果没有字典序的限制的话,我们可以对在最长上升子序列中的元素进行拆点最小割就可以求出最小代价。原创 2017-06-12 22:42:13 · 593 阅读 · 0 评论 -
bzoj 1797: [Ahoi2009]Mincut 最小割割边存在条件
题意给出一个有向图,问哪些边一定存在最小割中,哪些边可能存在于最小割中。 n<=4000,m<=60000分析首先对原图跑最大流,得到残余网络。 很容易得知若一条边u->v存在u->v的增广路,则这条边一定不是割边,反之亦然则可能是割边。 那么我们就把点分成了s集和t集还有一部分不确定。若一条边连接了s集和t集,则这条边一定是必然存在度最小割中的边。那么我们就得到了这样一个算法: 把残余网络原创 2017-07-11 11:05:46 · 408 阅读 · 0 评论 -
bzoj 3681: Arietta 主席树优化建图+网络流+dsu on tree
题意所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。 Arietta 有 m 个力度,第 i 个力度能弹出 Di 节点的子树中,音高在 [Li,Ri] 中的任意一个音符。 为了乐曲的和谐,Arietta 最多会弹奏第 i 个力度 Ti 次。 Arietta 想知道她最多能弹出多少个音符。 1 ≤ n, m ≤ 10000 。对于所有数...原创 2017-06-19 21:18:22 · 734 阅读 · 3 评论 -
LibreOJ #505.「LibreOJ β Round」ZQC 的游戏 网络流
题意分析比赛的时候唯一一道想出来的题。。。直接网络流就好了。没啥好说的。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int N=605;const int inf=0x3f原创 2017-06-17 08:07:21 · 738 阅读 · 0 评论 -
bzoj 3144: [Hnoi2013]切糕 最小割
题意给出一个n*m*h的点阵,每个点有权值。现在要在每个纵轴上选一个点,满足所有相邻(四连通)的纵轴选择的点的高度差不超过d。求最小权值和。 n,m,h<=40分析在apio讲课的时候听过一点点,但当时只听了建模的一部分,然后就掉线了。我们先考虑没有限制d的情况,先将其强制转换成最小割模型,那么就是把所有纵轴上的点连成一条线,然后把每个点拆成两个点,就可以直接最小割了。 现在加上d的限制,那么我原创 2017-05-21 10:55:06 · 258 阅读 · 0 评论 -
bzoj 3140: [Hnoi2013]消毒 dfs+网络流
题意最近在生物实验室工作的小T遇到了大麻烦。 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a、b、c 均为正整数。为了实验的方便,它被划分为a*b*c个单位立方体区域,每个单位立方体尺寸 为1*1*1。用(i,j,k)标识一个单位立方体,1 ≤i≤a,1≤j≤b,1≤k≤c。这个实验皿已经很久没有人用了,现在,小T被导师要求将其中一些单位立方体区域进 行消毒操作(原创 2017-05-19 15:47:38 · 328 阅读 · 0 评论 -
bzoj 2095: [Poi2010]Bridges 二分答案+网络流
题意YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到另外任意一个小岛。现在YYD想骑单车从小岛1出发,骑过每一座桥,到达每一个小岛,然后回到小岛1。霸中同学为了让YYD减肥成功,召唤了大风,由于是海上,风变得十分大,经过每一座桥都有不可避免的风阻碍YYD,YYD十分ddt,于是用泡芙贿赂了你,希望你能帮他找出一条承受原创 2017-05-15 09:37:52 · 392 阅读 · 0 评论 -
bzoj 4443: [Scoi2015]小凸玩矩阵 二分答案+网络流
题意给出一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。 1<=K<=N<=M<=250,1<=矩阵元素<=10^9分析一眼题。。。 把第k大变成第n-k+1小,二分答案,然后用网络流判断是否能在原图中找到k个点使得任意两点不在同一行同一列且都不大于二分值即可。代码#include<iostream>原创 2017-04-14 10:30:02 · 580 阅读 · 0 评论 -
bzoj 4657: tower 最小割
题意Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需 要操纵炮塔攻击BETA狗们。 攻击方法是:对于每个炮塔,游戏系统已经给出它可以瞄准的方向(上下左右其中一个),Nick需要 选择它的攻击位置,每一个炮塔只能够攻击一个位置,炮塔只能够向着它的瞄准方向上的某个位置发 动攻击,当然炮塔也可以不原创 2017-04-13 16:34:47 · 852 阅读 · 0 评论 -
bzoj 2768: [JLOI2010]冠军调查 最小割
题意一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段。随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门。新浪体育最近在吉林教育学院进行了一次大规模的调查,调查的内容就是关于切尔西能否在今年问鼎欧洲冠军。新浪体育的记者从各个院系中一共抽取了n位同学作为参与者,大家齐聚一堂,各抒己见。每一位参与者都将发言,阐述自己的看法。参与者的心里都有一个看法,比如FireDancer认为切尔西不可能夺冠,而W原创 2017-10-17 21:40:21 · 396 阅读 · 0 评论 -
bzoj 4429: [Nwerc2015] Elementary Math小学数学 网络流
题意Ellen给她的学生教小学数学。期末考试已经来临了。考试有n个题目,每一个题目学生们都要对一对数字进行加(+),减(-),乘(*)运算。 Ellen已经选好了n对数。剩下的是决定学生们应该对每对数执行什么运算。为了不让学生们感到厌烦,Ellen想确保n个正确答案都不一样。 请帮助Ellen自动化地构建考试。 1<=n<=2500,-10^6<=a,b<=10^6分析网络流?网络流!代码#i原创 2017-09-30 14:25:52 · 320 阅读 · 0 评论 -
bzoj 3504: [Cqoi2014]危桥 网络流
题意Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1。某些岛屿之间有桥相连,桥上的道路是双向的,但一次只能供一人通行。其中一些桥由于年久失修成为危桥,最多只能通行两次。Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到al算一次往返)。同时,Bob希望在岛屿bl和b2之间往返bn次。这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行。请问Alice和B原创 2017-10-10 11:54:56 · 267 阅读 · 0 评论 -
bzoj 4155: [Ipsc2015]Humble Captains 最小割+dp
题意每天下午放学时都有n个zky冲出教室去搞基。搞基的zky们分成两队,编号为1的zky是1号队的首领,编号为2的zky是2号队的首领。其他的zky可以自由选择是去1队还是2队。 zky们当中有几对zky是好基友(同一个zky可能在多对“好基友”关系中),如果一对好基友在同一个队,那么这个队的战斗力就+1。 现在你要解决两个问题:1.两队战斗力之和最大是多少?2.两队战斗力之差的绝对值最小...原创 2018-07-08 16:52:12 · 253 阅读 · 0 评论 -
bzoj 1391: [Ceoi2008]order 最大权闭合子图
题意有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成。 现在给出这些参数,求最大利润 1<=N<=1200,1<=M<=1200分析考虑最大权闭合子图的模型,只要把每个工作向机器连的inf的边变成租用费用就好了。代码#include<iostream...原创 2018-04-25 20:15:28 · 185 阅读 · 0 评论 -
Codeforces 434D Nanami's Power Plant 最小割
题意有n个变量,每个变量有一个取值范围和一个权值函数f(x),其中f(x)是一个二次函数。还有m个形如xu≤xv+dxu≤xv+dx_u\le x_v+d的限制,问最大的权值和是多少。 n≤50,m≤1000,|li|,|ri|≤100n≤50,m≤1000,|li|,|ri|≤100n\le50,m\le1000,|l_i|,|r_i|\le100分析对每个变量建ri+li+2...原创 2018-04-20 20:43:57 · 197 阅读 · 0 评论 -
bzoj 5251: [2018多省省队联测]劈配 网络流
题意太长了不想写。分析考虑建图,源点往每个选手连流量为1的边,每个导师往汇点连流量为战队人数的边,其余边先不连。 现在按编号从小到大考虑每个选手,把代表该选手的志愿的边从小到大逐个加入,每加入一个志愿就判断是否存在增广路,若存在则退出即可。 时间复杂度O(n4)O(n4)O(n^4) 对于第二问,还是类似的做法。对于每一个选手,枚举一个排名,在第一问的残余网络上把该排名之后的...原创 2018-04-09 15:04:38 · 237 阅读 · 0 评论 -
bzoj 3716: [PA2014]Muzeum 最小割/网络流+贪心+计算几何
题意吉丽的漫展有n件手办和m名警卫。建立平面直角坐标系,每个手办和警卫都可以看做一个点。警卫们的目光都朝着y轴负方向,且都有相同大小的视角。警卫可以看见自己视角内(包括边界上的点)的所有手办,不用考虑视线的遮挡。 你打算抢劫吉丽的漫展,但不可被警卫发现。为了实施这次抢劫计划,你可以事先贿赂某些警卫,让他们闭上眼睛。只要某件手办不在任何睁着眼睛的警卫的视野内,你就可以偷走它。你知道每件手办的价...原创 2018-04-08 08:35:08 · 384 阅读 · 0 评论 -
AtCoder Regular Contest 074 F - Lotus Leaves 最小割
题意有一个n*m的矩阵,其中有一些点可以走,有一个起点一个终点。每个点可以走到和他在同一行或同一列的点。问最少删掉多少个点使得起点不能到达终点。 n,m<=100分析按行和列建二分图,直接上最小割即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#incl...原创 2018-02-22 01:38:00 · 274 阅读 · 0 评论 -
东莞市2014年市队选拔赛 分组 构造二分图最小覆盖方案
题意分析显然判断前缀和后缀是否相等可以用hash。我在比赛的时候打了个贪心,每次都选比较大的组,水了59分。其实可以把每个前缀和后缀都当成一个点,建立二分图,把每个字符串当成一条边,那么问题就转变成了求一个二分图最小覆盖的方案。方法如下: 首先把所有匹配边和匹配点求出来,然后对于每个连通块讨论:若该连通块没有未匹配点,则把该连通块某一侧的点全部选掉即可。否则就从任意一个未原创 2017-06-07 12:53:21 · 463 阅读 · 0 评论 -
51nod 1325 两棵树的问题 最大权闭合子图
题意有两颗各含N个点的无根树,每棵树中点分别被编号为0,1,2,….,N-1;注意两棵树并不保证同构。 另外给一个N长的整数数组Score[],记录N个编号的得分,Score中的每个元素可正可负。 问题的任务是寻找 集合{0,1,2,3,4,…,N-1}的一个最优子集subset,要求满足以下条件: 1)在第一棵树中,subset中包含的编号对应的点能构成一个连通的子图;即去掉这棵树中所有su原创 2017-12-24 20:58:00 · 405 阅读 · 0 评论 -
Codeforces 903G Yet Another Maxflow Problem 线段树+网络流
题意给出一个图,这个图的点集被分成两部分,设为A和B,其中每部分都有n个点,设为A1...AnA_1...A_n和B1...BnB_1...B_n。 在AiA_i和Ai+1A_{i+1}之间,BiB_i和Bi+1B_{i+1}之间均连接着有向边,还有一些有向边从AiA_i连接到BjB_j。上述的每条边都有一个容量c。 有q次操作,每次操作x y表示将AxA_x到Ax+1A_{x+1}的边的容量改原创 2017-12-24 01:26:59 · 474 阅读 · 0 评论 -
bzoj 3158: 千钧一发 最小割
题意 n<=1000,1<=ai,bi<=10^6分析若两个点不能同时选,则在它们之间连一条边。可以保证这样连出来的图一定是一个二分图。 证明:显然所有偶数对满足条件2,所有奇数对满足条件1。 因为(2a+1)^2+(2b+1)^2=2(2a^2+2a+2b^2+2b+1) 直接上最小割即可。代码#include<iostream>#include<cstdio>#include<cst原创 2017-11-24 19:12:04 · 1293 阅读 · 0 评论 -
bzoj 3130: [Sdoi2013]费用流 网络流+二分答案
题意Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识。 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量。一个合法的网络流方案必须满足:(1)每条边的实际流量都不超过其最大流量且非负;(2)除了源点S和汇点T之外,对于其余所有点,都满足该点总流入流量等于该点总流出流量;而S点的净流出流量等于T点的净流入流量,这个值也即该网络流方案的总运输量。最原创 2017-11-22 16:55:03 · 425 阅读 · 0 评论 -
bzoj 4873: [Shoi2017]寿司餐厅 最大权闭合子图
题意Kiana最近喜欢到一家非常美味的寿司餐厅用餐。每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个代号ai和美味度di,i,不同种类的寿司有可能使用相同的代号。每种寿司的份数都是无限的,Kiana也可以无限次取寿司来吃,但每种寿司每次只能取一份,且每次取走的寿司必须是按餐厅提供寿司的顺序连续的一段,即Kiana可以一次取走第1,2种寿司各一份,也可以一次取走第2,3种寿司各一份,但不可以原创 2017-11-06 16:40:46 · 325 阅读 · 0 评论 -
51nod 1551 集合交易 匈牙利算法+最大权闭合子图
题意市场中有n个集合在卖。我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数。 每个集合有相应的价格,要使买到的集合花费最小。 这里我们的集合有一个特点:对于任意整数k(k>0),k个集合的并集中,元素的个数不会小于k个。 现在让你去市场里买一些满足以上条件集合,可以一个都不买。 1≤n≤300分析我好菜呀~~根据任选k个集合其并集大小不小于k的性质,可原创 2017-10-31 07:56:37 · 404 阅读 · 0 评论 -
bzoj 1475: 方格取数 最小割
题意在一个n*n的方格里,每个格子里都有一个正整数。从中取出若干数,使得任意两个取出的数所在格子没有公共边,且取出的数的总和尽量大。 n<=30分析黑白染色后最小割。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using n原创 2017-10-10 14:54:29 · 253 阅读 · 0 评论 -
bzoj 4554: [Tjoi2016&Heoi2016]游戏 网络流
题意有一个n*m的格子,分成空地,软石头和硬石头。在空地上放炸弹可以穿透一整行,但不能穿越硬石头。软石头不能放炸弹。问最多能放多少个炸弹使得所有炸弹互相炸不到。 n,m<=50分析考虑没有硬石头,就是每行每列分别为一个点。多了硬石头的限制,我们就可以把每行每列根据硬石头拆成若干个点,建图后跑最大流即可。代码#include<iostream>#include<cstdio>#include<c原创 2017-04-02 16:47:44 · 426 阅读 · 0 评论 -
bzoj 3275: Number 最小割
题意有N个正整数,需要从中选出一些数,使这些数的和最大。 若两个数a,b同时满足以下条件,则a,b不能同时被选 1:存在正整数C,使a*a+b*b=c*c 2:gcd(a,b)=1 n<=3000。分析显然是二分图最小割,但是没想到如何证明这为什么一定是个二分图。。。第一个条件意思是a和b不能同时为奇数,第二个条件意思是a和b不能同时为偶数。 下面我们来证明一下第一个结论。 a2+b2=原创 2017-04-10 19:36:27 · 383 阅读 · 0 评论 -
bzoj 3993: [SDOI2015]星际战争 二分答案+最大流
题意3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战。在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了。X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值。激光武器的攻击是连续的。这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人。Y原创 2017-03-28 15:01:19 · 388 阅读 · 0 评论 -
bzoj 1443: [JSOI2009]游戏Game 二分图博弈
题意给出一个n*m的地图,有的格子不能走。先手可以选择某个格子开始,然后到后手走,再到先手走。每个格子只能走一次,不能走的那方算输。问对于哪些格子,先手有必胜策略。 n,m<=100分析首先考虑黑白染色,那么这就变成了一个二分图,然后求出这个二分图的最大匹配。 假设先手选择了一个非匹配点,那么后手就只能走匹配点,然后先手沿着匹配走。若某一次后手走到了一个非匹配点,那么就出现了一条增广路,与最大匹原创 2017-02-22 17:43:47 · 571 阅读 · 0 评论 -
bzoj 2744: [HEOI2012]朋友圈 网络流
题意在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着。一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目。 两个国家看成是AB两国,现在是两个国家的描述: 1. A国:每个人都有一个友善值,当两个A国人的友善值a、b,如果a xor b mod 2=1, 那么这两个人都是朋友,否则不是; 2.原创 2017-02-21 21:38:54 · 577 阅读 · 0 评论 -
bzoj 1741: [Usaco2005 nov]Asteroids 穿越小行星群 网络流
题意有一个n*n的01矩阵,有m个点为1,每一次可以把一行或一列的1全部变成0,问最少要消多少次。 n<=500,m<=10000分析用最小割来做。 若一个点(i,j)为1则若不消第i行则必消第j列,从i到j+n连一条inf的边。从s到1-n,从n+1-n*2连流量为1的边,那么最小割即为答案。不想打dinic了,所以直接去blog上面复制了一个板子下来……代码#include<iostream原创 2016-11-24 19:52:35 · 618 阅读 · 0 评论 -
bzoj 1059: [ZJOI2007]矩阵游戏 网络流
题意给出一个n*n的01矩阵,每次可以交换任意行和任意列,问能不能使得主对角线上布满1. n<=200分析问题可以转换成问是否有n个1满足不同行且不同列,那么对于每一个为1的格子(i,j),从i到j连一条边,最后跑最大匹配即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<alg原创 2016-11-23 19:48:17 · 372 阅读 · 0 评论