最小费用流
HumveeA6
这个作者很懒,什么都没留下…
展开
-
(模板)最小费用流
最大流+SPFA结合体,小心即可。 #include<cstdio> #include<iostream> #include<vector> #include<queue> #include<algorithm> #include<cstring> using namespace std; struct edge{ ...原创 2018-03-09 20:06:28 · 173 阅读 · 0 评论 -
洛谷P3159
费用流题,构图非常巧妙。 考虑每个点的交换限制的约束,一看就知道是点容量,但是这里不是一分为二,而是一分为三。 首先我们把问题化简,变成对于原图上所有黑点,找到一个新图中的黑点,进行多次交换后到达。我们看到多次交换实际上是走了一条路径(这里不是最短路) 。对于这条路径的起点和终点,仅进行了1次交换,而路径上的其他点都交换了2次。所以我们需要构造一种图来把这个交换次数的差异体现出来,于是: ...原创 2018-03-12 10:21:34 · 187 阅读 · 0 评论 -
洛谷P3980
连边方法(以下描述中,用二元组(f,w)表示容量为f费用为w的边): 对于每一天向后一天连边(inf-ai,0) 对于每一种志愿者选择i,s向t+1连边(inf,ci) 从超级源向第一天连边(inf,0) 从最后一天+1向超级汇连边(inf,0) 然后从超级源向超级汇跑费用流。 为什么这样跑会正确呢?可以发现,第一次网络流后所有天数边的容量会被填至max-a_i (max为需求最大...原创 2018-03-12 11:10:10 · 226 阅读 · 0 评论 -
洛谷P4016
题目标签写着网络流诶….那么问题就是如何建图了…看到题解里一波大神用平均值来计算…但是蒟蒻没想到诶…所有我就比较暴力了…. 对于每个点一拆为二(ia,ib),建立超源超汇,然后对于每个点,从源点s向其连一条容量为c[i],费用为0的边,从ia向ib连一条容量为无限,费用为0 的边(因为可以不停的把别的地方的货物搬到ia,然后从ib搬到下一个点去,ia到ib搬运当然是不用钱的),然后从ib向汇点t...原创 2018-04-06 11:28:09 · 262 阅读 · 0 评论 -
洛谷P1251
关于构图: 这是一道最小费用(费用指单价)最大流的题目。 首先,我们拆点,将一天拆成晚上和早上,每天晚上会受到脏餐巾(来源:当天早上用完的餐巾,在这道题中可理解为从原点获得),每天早上又有干净的餐巾(来源:购买、快洗店、慢洗店)。 1.从原点向每一天晚上连一条流量为当天所用餐巾x,费用为0的边,表示每天晚上从起点获得x条脏餐巾。 2.从每一天早上向汇点连一条流量为当天所用餐巾x,费用为0的...原创 2018-04-06 21:31:09 · 204 阅读 · 0 评论