网络流
Ripped
我那么浮躁却想要读懂你的生活
展开
-
【POJ 1273】Drainage Ditches&Dinic详解
想来上一次认真写网络流还是。。。。一年多了。。。。 dinic算法写起来简单理解起来简单时间复杂度还棒棒的真是完美啊! 很少能见到时间、空间、编程复杂度都这么低的题目了,业界良心啊!(然而建图业界毒瘤2333)直接写步骤吧: 1、bfs找出每个点的层数(从源点出发的最短距离) 2、dfs搜索,注意每次必须走到下一层!下一层!同层不能走! 3、找到终点,减去流量,加上反向流量 4、回溯。回原创 2017-03-19 19:16:17 · 338 阅读 · 0 评论 -
费用流详解
费用流,也叫作最小费用最大流,是指在普通的网络流图中,每条边的流量都有一个单价,求出一组可行解,使得在满足它是最大流的情况下,总的费用最小。 (最大费用最大流同理,费用改成负的就行) 做法一般都是简单地SPFA(也就是和EK算法类似),时间复杂度比较高,所以一般规模都挺小的。 1、找到一条从源点到汇点的路径,使得这条路径的单价和最小。换句话说以流量的单价作为边权值跑最短路,注意因为不会有负环(原创 2017-04-25 08:19:16 · 6241 阅读 · 0 评论 -
【BZOJ 4819】【SDOI 2017】新生舞会
一看到这个要求的式子就能想到01分数规划,二分答案x后任意两个人对答案的贡献是a[i][j]-xb[i][j]。这样问题就转化为一个二分图匹配,边权就是这个贡献。 显然这是一个裸的费用流,首先建立超级源点和超级汇点,然后所有边的流量上限都是1,男生的n个点和女生的n个点之间两两连边,费用单价就是对答案贡献取反(因为求的是最大费用),加反向边,跑一下费用流就好了。#include<cmath>#i原创 2017-04-25 08:27:23 · 927 阅读 · 0 评论 -
【BZOJ 4873】【2017六省联考】寿司餐厅
对于m=0,相当于每个寿司的价格是独立的,那么设f[i][j]表示i到j这个区间寿司全部被取的最大美味度,显然f[i][j]可以从它的子区间得到。然后dp组合一下若干个区间就好了,60分感人。 正解是最大权闭合子图,把每个区间f[i][j]看作是一个节点A(i,j),把每个寿司看作是一个节点B(i),有如下约束条件: 1、取了A(i,j),一定要取A(i+1,j)和A(i,j-1); 2、取了原创 2017-04-27 14:28:12 · 1026 阅读 · 0 评论