
网络流
文章平均质量分 80
zhhx2001
这个作者很懒,什么都没留下…
展开
-
poj2516(最小费用最大流模版)
首先就这题而言,各k互不影响,可以分开来算,累加即可对于构图来说,以后可以源点s=0,汇点t=n+m,其中一组点是1~n,另一组n+1~n+m,注意可以这样构图对于最小费用最大流,要用spfa来做最短路径,只需记录路径即可#include#include#include#include#include#define N 130using namesp原创 2016-06-25 18:34:53 · 384 阅读 · 0 评论 -
bzoj1412(最小割)
其实就是让狼和羊的两个集合没有边相连,所有羊连s,cap为inf,注定不会割这条边;狼连t,cap为inf(同理)所有羊向四周相邻的狼和空地连边,所有空地向周围空地和狼连边(刚开始只是向狼连,wa了一次),因为可能空地有好几层,如果不连上空地就过不去了!!!注意对自己所得答案的检验!!一定要学会检验#include#include#include#include#inc原创 2016-07-29 16:52:14 · 296 阅读 · 0 评论 -
bzoj2424(费用流)
比餐巾计划简单多了。。直接构图即可#include#include#include#include#includeusing namespace std;const int N=10200;const int inf=0x3f3f3f3f;int n,m,S;int u[N],d[N];struct aa{ int flow,cap,to,pre,w原创 2016-07-29 17:15:19 · 362 阅读 · 0 评论 -
bzoj3171循环格(费用流)
费用流+二分图模型我们通过分析题目可得,成为一个完美的循环格,分析其本质,其实就是每一个点入度和出度都必为一那么,将每一个格子拆成两个点,一个表示出度,一个表示入度,做全图的最大匹配,就是为每一个点找一个唯一入度和唯一出度因为转方向需用费用,那么一个点向其原本指向的那个格子费用就是0,其他的格子费用就是0,然后跑费用流这题不必局限于如何转,而是需要挖掘题目的本质,寻找数学模原创 2016-07-30 21:31:49 · 317 阅读 · 0 评论 -
codevs1034(网络流)
问最少的时间,这是网络流的一个类型,即动态流问题:题目要求的不是能送最多多少人,而是限定了流量,求最少需要多少时间。我们面临着难题,一般的流网络无法表示两点间不同时刻的不同容量和流量,因此我们要拆点。如果最短时间是t,就把每个点Vi(包括源点和汇点)拆成Vi0,Vi1,Vi2,……,Vit这t+1个点,这样太空船在t-1时刻从vi出发在t时刻到达Vj就可以表示成Vit-1~~~原创 2016-07-31 10:55:34 · 838 阅读 · 0 评论 -
bzoj1433(网络流)
构造二分图,最大流判定源点向所有需要床位的连边有床位的向汇点连边如果i可以睡j的床i向j‘连边,然后跑最大流判定#include#include#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;int n,s,t;bool stu[55],g原创 2016-07-31 12:06:02 · 320 阅读 · 0 评论 -
bzoj2245(分段加边典型费用流)
竟然要开ll。。。#include#include#include#include#include#includeusing namespace std;const int N=1005;const int inf=0x3f3f3f3f;typedef long long ll;int n,m,idn[260],idm[260],T[10];int tot,s,原创 2016-08-03 09:52:12 · 627 阅读 · 0 评论 -
bzoj2768(最小割,二者取其一式问题)
为什么又把数组开小了。。。#include#include#include#include#includeusing namespace std;const int N=5000;const int inf=0x3f3f3f3f;int s,t,n,m;int head[N],cur[N],tot,lev[N];struct aa{ int pre,to,flow,ca原创 2016-08-03 10:12:34 · 1001 阅读 · 0 评论 -
bzoj2879(费用流+动态加边)
动态加边,没写过。。。本来应该一个厨师拆成的每个点都与不同的菜连容量为1,费用为t[i][j]×k 的边(k表示倒数第几个做,因为倒数第一做只有这个人需要等,做这个菜的时间不会其他菜) ,但是我们发现其实这些边最后一定有很多是不会走到的。所以刚开始,把所有菜和每一个厨师倒数第一个点相连在增广过程中,在增光路上找到和原点相连的点,并计算出他是哪一个厨师做的倒数第几个菜,然后把所有菜向原创 2016-08-04 08:52:12 · 871 阅读 · 0 评论 -
poj2391(floyd+二分+网络流判定)
真练debug能力啊1.位运算,运算等级太低,必须加(),毕竟多加不会错,小心驶得万年船啊2.搞两个inf,有不同的用途#include#include#include#include#include#include#include#define debug(x) cout<<#x<<"="<<x<<endlusing namespace std;typedef lo原创 2016-07-27 15:27:26 · 327 阅读 · 0 评论 -
bzoj1221(费用流)
拆点建图,拆点一个为主线,另一个表示接收脏毛巾辅助用(感觉不好说)注意清洗毛巾过几天的意思是,需要洗几天,如果是0天,才是明天就可以用,1:后天可以用,以此类推#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;const int N=2500;int n,m,id[原创 2016-07-29 15:55:23 · 376 阅读 · 0 评论 -
bzoj2127(还没过+最小割)
这题对我来说还是太难了#include#include#include#include#include#include#define FOR for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) #define rep(n,m) for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) using原创 2016-07-31 17:19:05 · 454 阅读 · 0 评论 -
bzoj1877(费用流)
裸的费用流就是中间的点要拆点,连边让cap为1,限制只能流过去一次原点和汇点不用拆点#include#include#include#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;const int N=1009;int n,m,id1[209],id2[209原创 2016-07-28 18:34:56 · 342 阅读 · 0 评论 -
bzoj1066(网络流)
不是很难的建模,就是注意加边的时候一些细节,不要加重复也不要少加一个点的出点要连上它所能到达的点的入点,注意这里并不是只能往下和右走,而是可以向四个方向走,那么就是要向四个方向都连,//就是wa在这里了a的出点连b的入点,b的出点连a的入点,实际上既然可以向四个方向走,那么就可以向四个方向都连,每一个点注:如果题目允许向各个方向(向右向下,向右向上,向左向下,向左向上)走,那么就是每个原创 2016-07-28 17:42:09 · 423 阅读 · 0 评论 -
dinic模板
#include#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;struct aa{ int to,pre,cap,flow;}edge[100009];int dis[10009],head[100009],cur[100009],tot;int n,m;void原创 2016-07-17 20:26:19 · 280 阅读 · 0 评论 -
codevs1922(二分图最大独立集)
棋盘类问题要格外注意数据范围,注意网络流将棋盘分成点后是平方的点数,例如本题200*200要开到50000稳妥,然而没算好就wa了好几次啊#include#include#include#include#include#includeusing namespace std;const int qx[]={-1,-1,-2,-2,1,1,2,2};const int qy[]原创 2016-07-28 11:47:25 · 280 阅读 · 0 评论 -
负载平衡问题(网络流)
建图最大流即可,注意可以在连续运输多次,刚开始直接从xi连向相邻的yi了,这样只是运输一次,没有考虑到运输多次的情况拆点,分XiYi,对应每个仓库。 从源点向Xi连边,容量为ri,费用为0; 从Yi向汇点连边,容量为xba,费用为0; 从Xi向对应的Yi连边,容量为INF,费用为0; 从Yi向环形相邻的Xi连边,容量为INF,费用为1; //!!!!由于货物在仓原创 2016-07-29 12:05:11 · 1790 阅读 · 1 评论 -
bzoj1305(最大流判定+二分+贪心)
这题刚开始猜出来正确的思路和实现方法,但正是因为猜的,所以才并不能十分的确定,仅仅只是知其然而不知其所以然,同时虽然思路对了,但原图多构了两排点,这是没有必要的,所以以后建完图后,看看是不是可以简化模型将每一个点拆成两个点,一个点表示和喜欢的人连,另一个点表示和不喜欢的人连,流量为k,因为最多只能和k个不喜欢的人跳二分舞曲数目mid,判定是否能举办mid次,将s与各个点连cap原创 2016-07-29 14:34:34 · 487 阅读 · 0 评论 -
bzoj1189(的网络流判定+二分)
12 12DDDDDDDDDDDDD..........DD..........DD..........DD..........DD..........DD..........DD..........DD..........DD..........DD..........DDDDDDDDDDDDD这个数据怎么也过不了。。。挖个坑,先做别的原创 2016-07-29 10:54:00 · 487 阅读 · 0 评论 -
bzoj2132(最小割经典例题)
注意,一对相邻格子如果不相同,所获得的利益应该是两个格子的c之和!!这里wa了一次(具体在本子上)#include#include#include#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;const int qx[]={0,0,-1,1};const int原创 2016-07-31 15:36:01 · 1010 阅读 · 0 评论 -
网络流建模学习
烦死了原创 2016-06-14 18:13:05 · 414 阅读 · 0 评论 -
bzoj1497(最大获利,最大点权闭合子图)
数据范围开小,wa了好几次。。。。bzoj范围开小会wa,我竟然刚知道。。。。套用在这一类题的方法即可以后看题要注意数据范围,,以为m是边数,实际上是点数,要仔细仔细再仔细!!!!!#include#include#include#include#include#include#include#define debug(x) cout<<#x<<"="<<x<<e原创 2016-07-26 18:46:19 · 842 阅读 · 0 评论 -
bzoj1834(网络流+费用流)
第一问裸第二问:新建一个汇点,将n号点与汇点相连,容量为k,(限制最多增大的流量)费用为0;将原先每一条边都新建一个边,容量为inf,表示可以任意大的扩建,费用的该边扩展所需的费用,如果原先的那一条边没有满,那么费用流时肯定是走那条边如果满了,就可能走扩展的边,同时cost一定的费用;直接费用流即可#include#include#include#include#inc原创 2016-07-27 19:00:48 · 296 阅读 · 0 评论 -
codevs1227(方格取数费用流)
又写炸了。。细节注释中#include#include#include#include#include#include#include#define debug(x) cout<<#x<<"="<<x<<endlusing namespace std;const int N=5050;const int inf=0x3f3f3f3f;struct aa{ int pr原创 2016-07-28 09:41:08 · 340 阅读 · 0 评论 -
codevs1907方格取数最大流
棋盘类问题通过黑白染色转化为二分图模型,本题求不相邻的格点取值最大值,在黑白染色的二分图中,若两点相连,则他们连边本题求最大权独立集,最大权独立集=总权值-最小点权覆盖集=总权值-构图后最小割=总权值-最大流#include#include#include#include#include#include#include#define debug(x) cout<<原创 2016-07-28 10:18:56 · 335 阅读 · 0 评论 -
最大密度子图poj3155
#include#include#include#include#include#includeusing namespace std;const int N=3105;const int inf=0x3f3f3f3f;const double eps=1e-8;int n,m,S,T;int x[N],y[N];int head[N],tot;struct aa{原创 2017-01-24 22:20:48 · 606 阅读 · 0 评论