![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 56
a1214034447
这个作者很懒,什么都没留下…
展开
-
hdu 6346 KM算法(bfs的O(n^3))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6346解题思路:这题卡dfs的KM所以只能用纯N^3的bfs#include<bits/stdc++.h>using namespace std;#define LL long longconst int inf = 0x3f3f3f3f;const LL ...原创 2019-10-30 18:50:55 · 635 阅读 · 0 评论 -
Gym - 101190D[最大费用流]
题目链接:https://vjudge.net/problem/Gym-101190D解题思路:假设我们默认每个小时都是在吃,那么初始ans = ∑e[i],然后我将si变为si - ei,表示在i时刻选择睡觉时会获得si的收益。但是在k个连续的段中选择si的次数ms <= times <= k-me。当ms == 0:将问题转化为覆盖问题,那么每个点最多只能被覆...原创 2019-04-30 13:24:51 · 193 阅读 · 0 评论 -
Gym - 101170J[最大流]
题目链接:https://vjudge.net/contest/298079#problem/J解题思路:将整个过程分成n个步骤,那么在每个步骤中都有一个新的队列,它是空的,现在要加入当前步骤的a[i],但是还有考虑上一个步骤是否队列中还存在数据没有被传送,所以我们需要从上一个步骤连一条边指向下一个步骤,把它加到a[i]中一起处理。还有每一个步骤都有一个d可以将数据流出,所以我们一个...原创 2019-05-03 23:08:46 · 158 阅读 · 0 评论 -
Gym - 101128F[网络流最大流]
题目链接:https://vjudge.net/problem/Gym-101128F解题思路:这题建图真的很抽象。首先建立源点S,汇点T。对于点是'.'的建立S到它的边流量为B,否则建立它到T的边流量为B。然后对于点(i,j)分别向四个方向建立流量为A的边,然后跑最大流。首先很明显的题目要求是如果'.'点旁边有'#'的点,那么说明花费要+A。但是为什么把所有四个方向的点都连...原创 2019-05-01 21:38:37 · 263 阅读 · 0 评论 -
FZU - 2295 - 最大权闭合子图
题目链接:https://vjudge.net/problem/FZU-2295 解题思路:如果不考虑最后K对是相互对立的话,那么就是模板最大权闭合子图。因为K最大是5,所以最多是有2^5种情况,这个数可以看做常数,那么就是做32遍最大权闭合子图就是了。 #include <iostream>#include <cstdio>#include &l...原创 2019-02-24 19:09:14 · 155 阅读 · 0 评论 -
牛客国庆集训派对Day6 - A 最小费用流
题目链接:点击这里 解题思路:(n+1)^2 = n^2 + 2*n + 1, 将根数变成点,一个区域和x根的点的连边花费就是2*x+1,这样跑最小费用流就OK了. #include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;const int ...原创 2018-10-09 20:43:10 · 153 阅读 · 0 评论 -
hdu 5772 - 最大带权闭合子图
题目链接:点击这里 解题思路:如果我们选了(i,j)点对,那么就会获得w[i][j]+w[j][i]的利益.那么我们在原有的点上增加(n*(n-1))/2个点对点,和10个0~9的字符点.原来的点对应的权值就是改点所对应字符值得ax0~9字符点的权值就是bx-ax,点对点的权值就是w[i][j]+w[j][i].除了正权连源点S,负权连汇点T之外,(i,j)连j和i,i连对应字...原创 2018-10-04 15:40:35 · 156 阅读 · 0 评论 -
hdu 4971 - 最大带权闭合子图
题目链接:点击这里 解题思路:最大带权闭合子图入门题.按照题目意思建图,然后跑网络流即可. #include<bits/stdc++.h>#define inf 0x3f3f3f3ftypedef long long ll;using namespace std;const int mx = 1e2 + 10;int n,m,S,T,dep[mx],tot;...原创 2018-10-04 15:29:31 · 223 阅读 · 0 评论 -
最大权闭合子图小结
闭合子图:从原图的点集V中选取若干个点生成一个新的点集v,若任意的节点i∈v,在原图中有i->j的边时j也∈v,那么v构成的子图就被称为闭合子图.例如有3个点1,2,3且有边1->3,2->3构成的一个图.此时有闭合子图{1,3},{2,3},{3},{1,2,3}以及∅ 最大带权闭合子图:此时每个节点都有其相应的权值,选择一个闭合子图使得他们的节点权值和最大...原创 2018-09-23 17:50:29 · 574 阅读 · 0 评论 -
ACM-ICPC 2018 焦作赛区网络预赛 - F - 最大费用流
题目链接:点击这里解题思路:如此神奇的构图!首先建立源点汇点S = 0,T = n + 1,然后对所有i∈[0,n]建立一条(i,i+1)容量为k花费为0的边,使所有的点一开始都形成一个串.那么对于一个覆盖l->r,用费为w,建立一条(l,r+1)容量为1花费为w的边,这怎么理解呢?原来在没有覆盖区间的网络里面形成的那一串所有点的流量都是k,也就是说从S出发每次流出...原创 2018-09-17 20:46:22 · 363 阅读 · 0 评论 -
ACM-ICPC 2018 沈阳赛区网络预赛 F- 有源汇上下界可行流
题目链接:点击这里关于上下界网络流解题思路:将二分图的点变成边,也就是新建一个点唯一指向原来的点,使得新建的与原来的一一对应.这样经过原来的点就必须经过新建点与原来点的边,也就将点变成了边,直接在建立源点S,汇点T,使其变为有源汇上下界网络流.之后就是对其求是否有可行流了. #include <bits/stdc++.h>using namespace st...原创 2018-09-11 21:56:51 · 152 阅读 · 0 评论 -
关于上下界网络流
1.无源汇点上下界可行流一个无源汇点网络流就相当于一个循环流,流量在这个循环中一直流动,它的最大流就是单位时间的最大流量.那么对于无源汇上下界网络流是否有可行解,也就是满足每个边的流量都至少是它的下界,并且保证所有点的"流量守恒"就是有解.那么我们就想办法将有上下界转化为无上下界问题,也就相当于下界为0,那么转化为无上下界网络流它的边的容量就变为(上界值-下界值).如此转化会造成新的网...原创 2018-09-11 21:51:17 · 148 阅读 · 0 评论 -
hdu 6437 - 最大费用流
题目链接:点击这里 解题思路:把每一场电影看成一个点,然后建成一个图。但是点只能经过一次所以跑网络流的时候要在每个点前面都建一条容量为1的边,那么就保证了点只会被经过一次了。接来下就是建立超级汇点和超级源点。其次在建一个次源点连接超级源点他们的容量为K,让次源点和超级汇点与各个点相连一条容量为1的边。接下来就是跑最大费用流了。 #include<bits/stdc+...原创 2018-08-23 19:32:44 · 211 阅读 · 0 评论 -
dinic算法与网络流一点笔记
1.什么是网络流?在一个有向图上选择一个源点,一个汇点,每一条边上都有一个流量上限(以下称为容量),即经过这条边的流量不能超过这个上界,同时,除源点和汇点外,所有点的入流和出流都相等,而源点只有流出的流,汇点只有汇入的流。这样的图叫做网络流。就好比你家是汇点,自来水厂是源点.自来水厂通过许多的水管将水导入你家,水管的大小不一,所以口径不同最大流量(容量)也不同,虽然有的水管口径很大,但并不...原创 2018-07-11 19:59:28 · 299 阅读 · 1 评论 -
牛客网暑期ACM多校第五场E - 带权二分最大匹配
题目链接:点击这里 解题思路:原题意可以看做原来4个人的宿舍在i宿舍现在要搬到j宿舍需要至少搬多少个人。那么新宿舍与旧宿舍里面相同的人数有几个说明这几个人就可以不用搬了。形象的说,如果从i宿舍搬到j宿舍,就看j和i宿舍现在的人里面是否存在相同的人在里面,这几个人就不用搬了,不在j里面的要从i搬到j。最后就是跑一个二分最大匹配求出不用搬的最多人数,然后用4*n减去就行了。 #i...原创 2018-08-05 14:31:23 · 199 阅读 · 0 评论 -
hdu 1533 - 最小费用最大流
题目链接:点击这里 解题思路:首先要知道怎么写最大流,不懂的可以先转个场:浅谈网络流那么最小费用最大流就是现在每个边不只有容量了,还有一个花费,就是单位流量流过要的花费。要求你求出在最大流的情况下的最小花费,所以之前我们再求最大流不考虑花费的情况下,只要能达到最大流就可以了,并不用去考虑流量是走哪些边的,现在就是要考虑了。那么在建边的时候正向边的花费就是我们求得的值,反向边...原创 2018-07-20 19:45:27 · 245 阅读 · 0 评论 -
hdu 3987 - 最小割最少割边
题目链接:点击打开链接解题思路:几乎和hdu6214相同,具体了解看这里点击打开链接代码:#include<bits/stdc++.h>using namespace std;const __int64 inf = 1ll<<47;const int mx = 1e5 + 10;const int maxn = 1e3 + 10;int n,m,S,T,tot,h...原创 2018-07-11 21:17:08 · 430 阅读 · 0 评论 -
hdu 6214 - 最小割最少割边
题目链接:点击打开链接解题思路:第一种:先跑一遍最大流,然后把正向满流的边容量+1,不满流的容量变成inf,再跑一遍最大流。说明:割边一定满流,满流不一定是割边。我们将满流的边容量+1,那么在最少割边位置不变的情况下,求出的最大流的值就是割边数*1==割边数。将不满流的容量变为inf这样确保他们不会变成满流也不会影响到满流边变成不满流,也就是割边还是不会被他影响。将满流边容量+1,首先我们知道不是...原创 2018-07-11 20:26:13 · 522 阅读 · 0 评论 -
hdu 2255 - KM算法
题目链接:点击打开链接KM算法具体了解:点击打开链接#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;const int mx = 3e2 + 10;typedef long long ll;int n,m,w[mx][mx],lx[mx],ly[mx];int slack[mx],cp[mx]...原创 2018-06-12 20:41:08 · 146 阅读 · 0 评论