网络流
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[BZOJ1570][JSOI2008]Blue Mary的旅行(最大流)
题目描述传送门题目大意:有n个点m条边的图,每一条边一天只能通过一定数量的人,每个人一天只能走一条边,问T个人全部从1走到n所用的最短天数。题解首先二分答案k,然后判定k天能不能过去 每个点拆k+1个点,分别表示k+1个时刻,然后对于从第i个时刻到第i+1个时刻连边,连对应的m条边,然后对于每一个时刻的1号点和n号点s->1,n->t,然后判断最大流是否>=T就行了 但是我并没有写二分,而是枚举原创 2017-05-09 21:33:31 · 1139 阅读 · 0 评论 -
[POJ2396]Budget(有源汇有上下界的可行流)
题目描述传送门题解和无源汇有上下界的可行流类似,只需要加一条边t->s,限制为[0,inf]就可以了,相当于是让源点和汇点也满足流量平衡 然后再建立附加源汇ss,tt,其余的就和无源汇的一样了这道题的话,把每一行看成一个点xi,每一列看成一个点yi,那么首先s->xi,[sumxi,sumxi],yi->t,[sumyi,sumyi] 对于某一个点(i,j)的限制[l,r],xi->yj,[l,原创 2017-02-03 10:40:14 · 444 阅读 · 0 评论 -
[ZOJ2314]Reactor Cooling(无源汇有上下界的可行流)
题目描述传送门题意: 一个核反应堆的冷却系统有n个结点,有m条单向的管子连接它们,管子内流量有上下界的要求,问能否使液体在整个系统中循环流动。题解无源汇有上下界的可行流 建图方法: 建立附加源汇st 假设xy有边,下界为l上界为r,那么x->y,r-l 令d(i)表示所有流入i的边的下界和-所有流出i的边的下界和 若d(i)>0,那么s->i,d(i) 若d(i)<0,那么i->t,-原创 2017-02-03 09:12:22 · 396 阅读 · 0 评论 -
[BZOJ1283]序列(费用流)
题目描述传送门题解问题可以转化为选k次,每次选一个子序列,每一次选连续m个里面只能选一个 对序列中每一个元素建立一个点pip_i s->p1p_1,k,0,pnp_n->t,k,0 pip_i->pi+1p_{i+1},k,0 对于1<=i<=n-m,pip_i->pi+mp_{i+m},1,aia_i 对于n-m+1<=i<=n,pip_i->t,1,aia_i 最大费用最大流代码#i原创 2017-01-30 21:41:30 · 936 阅读 · 0 评论 -
[BZOJ1391][Ceoi2008]order(最小割)
题目描述传送门题解对于每一个工作,s->x,能赚到的钱 对于每一个机器,x->t,买它用的钱 对于每一个工作x用到的机器y,x->y,租的钱 答案即为sigma能赚到的钱-最小割这其实是最大权闭合子图的一个变形 最大权闭合子图在原图中的边连的是inf,这条inf的边限制了相连的两个点选了一个就不能选另外一个 而这里是租金,即两个点可以同时选,但是必须付出一定的代价明确的dinic当前弧优化原创 2017-01-30 21:08:56 · 525 阅读 · 0 评论 -
[BZOJ3438]小M的作物(最小割)
题目描述传送门题解比较傻逼的建图方法同happiness更科学一点的是最大权闭合子图 PoPoQQQ的题解: 首先我们先把所有的元素都放在集合A中 获得所有的a[i]和c1[i] 然后考强调内容虑最大权闭合子图 一个点如果不选就放在A集合中 选就放在B集合中 一个点如果选 那么就要扣除相应的ai并获得相应的b[i] 于是每个点的权值为b[i]-a[i] 将所有的子集拆点变成两个 一个子集原创 2017-01-30 16:11:20 · 630 阅读 · 0 评论 -
[BZOJ3158]千钧一发(最小割)
题目描述传送门题解每个点拆点xi,yi,s->xi,yi->t,bi 对于不能同时选的两个点ij,xi->yj,inf,xj->yi,inf 答案为(2∗∑i=1nbi−maxflow)/2(2*\sum\limits_{i=1}^nb_i-maxflow)/2 刚开始的时候只对于j>i的连边,然后∑i=1nbi−maxflow\sum\limits_{i=1}^nb_i-maxflow,但是原创 2017-01-30 12:38:18 · 1519 阅读 · 0 评论 -
[BZOJ1711][Usaco2007 Open]Dining吃饭(最大流)
题目描述传送门题解对于每一个食物ai,s->ai,1 对于每一个饮料bi,bi->t,1 对于每一头牛,拆点ci->di,1 对于每一头牛选择的食物和饮料ai->ci,di->bi代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int max_n=原创 2017-01-30 09:52:08 · 520 阅读 · 0 评论 -
[BZOJ1532][POI2005]Kos-Dicing(二分+最大流)
题目描述传送门题解二分答案mid 最大流判断 s->每场比赛,1 每场比赛->参加这场比赛的两个人,1 每个人->T,mid 判断是否能满流即可代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>using namespace原创 2017-01-25 15:48:06 · 710 阅读 · 0 评论 -
有上下界的网络流 学习笔记
预备知识f(u,v)f(u,v)表示u->v这条边的实际流量 b(u,v)b(u,v)表示u->v这条边的流量下界 c(u,v)c(u,v)表示u->v这条边的流量上界 在一个无源汇的普通网络流图中,满足0≤f(u,v)≤c(u,v)0\le f(u,v)\le c(u,v)∑f(u,i)=∑f(i,v)\sum f(u,i)=\sum f(i,v)分别称为流量限制条件和流量平衡条件原创 2017-02-05 22:37:23 · 7074 阅读 · 10 评论 -
[BZOJ1497][NOI2006]最大获利(最小割)
题目描述传送门题解对于每一个中转站,s->i,pi,割掉表示花费pi建立中转站 对于每一个顾客,i->t,ci,割掉表示放弃ci的收益 如果一个顾客x需要某一个中转站y,那么y->x,inf,因为py和cx不能同时满足,必须选一条割掉 所有顾客的收益之和减去最小割即为答案代码#include<algorithm>#include<iostream>#include<cstring>#in原创 2017-01-30 11:09:00 · 691 阅读 · 0 评论 -
[BZOJ3993][SDOI2015]星际战争(二分+最大流)
题目描述传送门题解二分+最大流的思路很好想吧 二分时间mid,对于每一个武器s->x,mid*bi,对于每一个机器人x->t,ai,对于每一个武器x和它能攻击到的机器人y,x->y,inf,判断是否能满流即可 精度还是比较良心的 写网络流总是数组开小真是醉了 再开小数组自断双手代码#include<algorithm>#include<iostream>#include<cstring>原创 2017-01-31 21:04:32 · 687 阅读 · 0 评论 -
[BZOJ3876][Ahoi2014]支线剧情(有源汇有上下界的费用流)
题目描述传送门注意这道题是要求每一条边都被覆盖,而不是每一个点题解原图的建图方法: s->1,[0,inf],0 i->t,[0,inf],0 对于给出的一条边i->j费用为c,连边i->j,[1,inf],c 然后将这个图进行改造求有源汇有上下界的费用流即可但是这道题让我迷惑的一点是, 原图如果是求最小费用最大流的话最大流不应该是inf么 大概是因为有源汇有上下界的费用流只是在满足流量原创 2017-02-05 16:26:29 · 843 阅读 · 0 评论 -
[BZOJ3144][Hnoi2013]切糕(最小割)
题目描述传送门题解很典型的最小割啊 切糕的每一小块就是一个点,然后再在切糕的最上面一层建一层P*Q个虚拟的点 s向最上面一层点连边,最下面一层点向t连边 对于第一个限制,每一个点向它下面的那个点连边,容量为下面那个点的权值 对于第二个限制,每一个点向它上面第d个点相邻的四个点连边,容量为inf,这样就保证了如果割的不是距离d以内的点,源点和汇点还是连通的,一定不是一种最小割的方案 然后做最原创 2017-02-06 16:58:39 · 602 阅读 · 0 评论 -
[BZOJ1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机(二分+最大流)
题目描述传送门题解这题目就是p 实际上就是问有没有不同的t条路径从1走到n,然后路径的最大值最小 二分显然,二分出mid之后,s->1,T;n->t,T,然后对于每一条边直接连,容量为1 需要注意的是这题是无向边代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>原创 2017-02-12 19:39:01 · 740 阅读 · 0 评论 -
[BZOJ2400]Spoj 839 Optimal Marks(最小割)
题目描述传送门题解首先考虑如何求出第一问 要求边权和最小 按位分开考虑,实际上就是让这一位上的1尽量少 对于每一个点i,如果这一位已经确定,那么0:s->i,inf,1:i->t,inf 对于每一条边,将两个端点x,y,x->y,1;y->x,1 这样跑最小割据说这样跑完最小割了之后加一个限流然后跑费用流是可以的 不过有一个非常巧妙的方法能将这两问的答案一起求出来 同样按位分开考虑,同原创 2017-02-19 23:08:01 · 715 阅读 · 0 评论 -
[BZOJ2132]圈地计划(最小割)
还真实以历史,还生命以过程——这就是人类的大明智。原创 2016-04-07 19:17:37 · 620 阅读 · 0 评论 -
[BZOJ3698]XWW的难题(有源汇有上下界的最大流)
题目描述传送门题解最大流和可行流的做法的区别:先ss->tt做一遍最大流,判断是否可行;然后将t->s,inf这条边去掉,再做一遍s->t的最大流,即为答案 这道题原图的建图方法是: 对于每一行i,s->i,[a(i,n),a(i,n)+1] 对于每一列j,j->t,[a(n,j),a(n,j)+1] 对于每一个点(i,j),i->j,[a(i,j),a(i,j)+1] 然后再按照有源汇有原创 2017-02-03 19:57:11 · 692 阅读 · 0 评论 -
[BZOJ2055]80人环游世界(有源汇有上下界的费用流)
题目描述传送门题解原图: 对于pi,拆点xi,yi s->S,[m,m],0 S->xi,[0,inf],0 yi->t,[0,inf],0 xi->yi,[vi,vi],0 对于有航线的pi和pj,yi->xj,[0,inf],cost这样就建好了原图 那么有源汇有上下界的费用流的改造方法: 首先建立附加源汇ss,tt 对于原图里有的一条边x->y,[l,r],cost,变成x-原创 2017-02-04 16:53:23 · 1704 阅读 · 0 评论 -
[BZOJ1266][AHOI2006]上学路线route(spfa+最小割)
题目描述传送门题目大意:给出一个n个点m条边的无向图,每一条边有长度和代价,先求1-n的长度最短路,在求去掉最小代价的边,使1-n的长度最短路变大题解首先建出来最短路径图,然后连边容量为代价,跑最小割就行了最短路径图也就是图上的每一条边都在至少一条最短路中,判断的时候只需要判断边(u,v,c)是否满足dis(u)+c=dis(v)就行了 让这些最短路都不能1和n连通所以跑一下最小割就行了代码#in原创 2017-05-11 22:23:42 · 1165 阅读 · 0 评论 -
[BZOJ1834][ZJOI2010]network 网络扩容(最大流+费用流)
若是有能笑着逝去的人生,该多好。原创 2016-04-28 15:13:46 · 851 阅读 · 0 评论 -
[BZOJ2163]复杂的大门(最大流)
题目描述传送门题解『转化』 由于传送门的使用次数是有限的,没有代价,而公交车是任意两点直达,代价均为1,那么问题就可以转化为最多可以使用多少次传送门。 『拆点』 我们知道到达一个点即意味着也要从这个点离开,由于传送门单向,我们自然可以想到拆点。 『建图』 按照传送门的起止点连边,容量为传送门最大使用次数;在从源点分别向每个起点连边,从每个终点分别向汇点连边,容量分别为每一个点应到达的次数。原创 2016-02-21 17:07:30 · 1214 阅读 · 0 评论 -
[codevs1993]草地排水(最大流)
一个笑就击败了一辈子,一滴泪就还清了一个人。原创 2016-02-19 16:37:28 · 719 阅读 · 0 评论 -
[BZOJ1066][SCOI2007]蜥蜴(最大流)
曾经海枯石烂,抵不过好聚好散。原创 2016-03-07 21:44:47 · 632 阅读 · 0 评论 -
[BZOJ2285][Sdoi2011]保密(01分数规划+最小割)
题目描述传送门题解首先求出来n到1~n1的最短路,这个需要用到01分数规划 首先二分答案mid,那么假设∑ai∑bi≤mid{\sum a_i\over \sum b_i}\le mid,也就是当∑ai−∑bi∗mid≤0\sum a_i-\sum b_i*mid\le 0的时候说明还存在更优的答案 那么将每一条边的边权变成a-b*mid,然后spfa判断是否有负权的路径就行了 注意这里spf原创 2017-04-06 07:22:59 · 909 阅读 · 0 评论 -
[网络流24题][BZOJ1475]方格取数(最小割)
题目描述传送门题解讲棋盘进行黑白染色,从超级源向所有黑点连边,容量为num;从所有白点向超级汇连边,容量为num;再从所有的黑点向与之相邻的白点连边,容量为INF。 求最小割(最大流)即为答案。最小割是说最小的舍弃的边,并且将源点与汇点隔断。那么黑点与它相邻的白点不可能有通路,否则源点汇点割不断。这样的思想以后注意。代码#include<iostream>#include<cstring>#i原创 2016-03-19 19:45:38 · 670 阅读 · 0 评论 -
[BZOJ2095][Poi2010]Bridges(二分+最大流+欧拉图)
题目描述传送门题目大意:n个点m条边的无向图,每一条边正向走和反向走的价值是不同的。求图中的一个欧拉回路,并且走的价值的最大值最小。题解很容易想到二分答案,关键是怎么判定 判断欧拉回路的条件有两个:①整个图强连通②每个点的入度=出度 首先如果图中的某一条边断掉了那么无解 然后能走的边有一些是有向边,有一些是无向边,这就是一个混合图的欧拉回路判定问题 首先将每一条无向边随便规定一个方向,求出每原创 2017-04-14 08:46:50 · 656 阅读 · 0 评论 -
[BZOJ1565][NOI2009]植物大战僵尸(tarjan+最小割)
题目描述传送门题解首先有一些保护与被保护的关系是给出的,还有就是每一排前面的点可以保护后面的点 从保护的点向被保护的点连边 可以发现,如果一个强连通分量的大小大于1,那么这个强连通分量里的所有点都不可能被打到。并且如果有一个点不可能被打到,它能到达的点也都不可能被打到 把不可能被打到的点都剔除出去,最后只可能剩下一个DAG 那么这些点是可以选择的,但是选择某一个点的前提是,所有保护它的点都被原创 2017-03-04 19:07:52 · 817 阅读 · 0 评论 -
SDOI2017 Round1 解题报告
Day1A product题意简述定义f(0)=0,f(1)=1,f(n)=f(n−1)+f(n−2)(n≥2)f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n\ge 2) 求∏i=1n∏j=1mf(gcd(i,j))\prod\limits_{i=1}^n\prod\limits_{j=1}^m f(gcd(i,j)) 多组数据,对109+710^9+7取模数据范围对10%原创 2017-04-12 07:43:21 · 1231 阅读 · 0 评论 -
[BZOJ3218][UOJ#77]A+B Problem(可持久化线段树+最小割)
题目描述传送门题解第一次见数据结构和网络流结合的题目 orz vfk首先这题一眼最小割嘛 s->i,bi;i->t,wi 对每一个点i建立一个虚拟的点i’,i->i’,pi 然后如果li<=a(j)<=ri且1<=j<=i-1,那么连边i’->j 跑最小割就行了 然而这道题边是n2n^2的,这样做不行看到区间考虑用一棵线段树来优化边数 首先假设没有1<=j<=i-1的限制 先将ai,原创 2017-02-10 07:55:25 · 600 阅读 · 0 评论 -
网络流之最大流 EK/Dinic/Isap算法 学习笔记
为这,我已经在佛前求了五百年,求他,让我们结一世尘缘。原创 2016-02-17 23:03:41 · 2074 阅读 · 0 评论 -
[BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)
题目描述传送门题解一眼网络流啊。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 160000#define inf 2100000000int n,m,s,t,max原创 2017-03-12 21:59:45 · 705 阅读 · 0 评论 -
[BZOJ1927][Sdoi2010]星际竞速(费用流)
题目描述传送门题解这道题有每一个点经过且只经过一次的限制以为是有上下界的费用流 然后写写写…对是对了,T得好惨 因为加了n2n^2条边…实际上这道题一个普通的费用流就能解决了 对于每一个点拆点xiyi s->xi,1,0 s->yi,ai yi->t,1,0 对于能到达的两个点ij,xi->yj,time 这样跑一遍费用流就可以了 可以发现是一定可以满流的,保证了每一个点都被访问一原创 2017-02-04 19:10:48 · 769 阅读 · 2 评论 -
[BZOJ4514][Sdoi2016]数字配对(数论+费用流)
题目描述传送门题解首先判断两个数是否能配对 线筛10710^7范围内的质数,然后超过这个范围的用Miller_Rabbin——直接暴力也可以 拆点xiyi,对于能配对的两个点ij,连边xi->yj,inf,ci*cj,xj->yi,inf,ci*cj 然后对于每一个点i,连边s->xi,bi,0,yi->t,bi,0 这样建图之后跑最大费用费用流,因为是每一次找一条最大的费用增广,所以如果当原创 2017-03-28 22:53:17 · 574 阅读 · 0 评论 -
[BZOJ1324]Exca王者之剑(最小割)
题目描述传送门题解题目就是吓唬你玩的 实际上就是有边相邻的格子不能同时选 黑白染色之后最小割代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 2000005#defin原创 2017-03-28 19:33:16 · 595 阅读 · 0 评论 -
[UVa10779]Collectors Problem(最大流)
题目描述传送门题意:有T(T≤20)组数据。Bob在与他的n−1(2≤n≤10)个同伴交换糖纸,一共有m(5≤m≤25)种糖纸。Bob希望能和同伴交换使得手上的糖纸数尽量多。他的同伴只会用手上的重复的交换手上没有的,并且他的同伴们之间不会产生交换。求出Bob能拥有的最大糖纸种数。题解因为同伴只愿意用多余的交换没有的,所以Bob拿一种糖纸只能与一个同伴交换一次 建立s,t,两排点xi,yi,xi表示原创 2017-02-19 10:32:14 · 603 阅读 · 0 评论 -
[BZOJ2502]清理雪道(有源汇有上下界的最小流)
题目描述传送门题解建原图很简单: 对于能到达的点x,y,x->y,[1,inf] s->i,[0,inf];i->t,[0,inf]将原图进行改造 建立附加源汇ss,tt 对于原图中有的边x->y,[b,c],连边x->y,c-b 记某一个点的权d(i)为所有流入这个点的边的下界和-所有流出这个点的边的下界和 若d(i)>0,连边ss->i,d(i) 若d(i)<0,连边i->tt,-原创 2017-02-05 19:55:13 · 938 阅读 · 0 评论 -
[BZOJ2406]矩阵(二分+有源汇有上下界的可行流)
题目描述传送门题解刚开始没看见绝对值。。。 把这道题翻译一下其实就是构造一个b矩阵,其中每一个点有限制[L,R],令矩阵c=a-b,使c矩阵每一行的和的绝对值和每一列的和的绝对值的最大值最小最大值最小很容易想到二分 二分答案mid之后,用网络流判定 就是满足|∑ai−∑bi|≤mid|\sum a_i-\sum b_i|\le mid 分类讨论一下得出∑ai−mid≤∑bi≤∑ai+mid\原创 2017-02-05 19:09:10 · 1432 阅读 · 0 评论 -
[BZOJ1458]士兵占领(最大流)
深谋若谷,深交若水,深明大义,深悉小节,已然,静舒。原创 2016-04-06 09:28:45 · 816 阅读 · 0 评论 -
【BZOJ2127】happiness(网络流dinic)
去年海棠锁朱楼,花下卿舞袖,如今,人空瘦,海棠落琼眸。原创 2016-02-26 20:45:31 · 730 阅读 · 0 评论