网络流
Love_xyh
这个作者很懒,什么都没留下…
展开
-
[HNOI2013]消毒
如果只有二维,那么我们建二分图求最大匹配,O(n^2)的复杂度可以实现。而现在是三维,发现不会三分图,好像也没有三分图这个算法…再思考一下对于二维,是否有别的暴力实现方法?我们可以暴力枚举哪些行是被消掉的,然后对于不是剩下的黑点,枚举每一列是否需要再消一次。复杂度:O(2^n*m)由于a * b * c<=5000,可得min(a,b,c)<=17,所以现在我们也可以暴力枚举每一层是否消掉,然后对于没有消掉的层,进行二分图求最大匹配,因为现在三维就变成二维的了。我们将最小的那一维作为立方原创 2020-09-12 18:49:57 · 127 阅读 · 0 评论 -
[ZJOI2007]矩阵游戏
我们发现同行同列的点无论经过多少次变换仍然同行或同列,所以题目可转换为能不能找到n个互相不同行或同列的点。那么我们用二分图求一下最大匹配即可。#include <bits/stdc++.h>using namespace std;const int N=205;int T,n,x,ans;int match[N<<1];bool vis[N<<1];int cnt,head[N<<1];struct edge{int next,to;}e[N原创 2020-09-12 18:38:47 · 445 阅读 · 0 评论 -
[HNOI2001]软件开发
最小费用最大流(仅提供本人建图思路过程)首先拆点,分为早上和晚上两个点,i和n+i。1.从n+i向T连流量为w[i],费用为0的边。(表示每天必须要拥有w[i]块可以用的毛巾,不管用什么方法)我们知道对于一天的需要的毛巾,可以有两种方法来集齐:直接买新毛巾;或是经过清洗。2.如果是买新毛巾,那么:从S向n+i连流量为w[i],费用为f的边。3.如果是经过清洗,那么:从i向n+i+a+1连流量为w[i],费用为fa的边;从i向n+i+b+1连流量为w[i],费用为fb的边。(表示最多有w[i]块毛原创 2020-09-03 19:20:09 · 110 阅读 · 0 评论 -
洛谷 P1401 城市
Solution1:可由题意得一定存在T条路径,所以我们寻找T遍路径。对于每一次的路径寻找,二分答案此次的最长路段长,若满足条件则标记路径。(对于标记的路径,以后则不能使用)由此,我们可得到,答案即为第T次寻找路径的最长路段长。时间复杂度:O(T (n+m)logm),且常数较大。洛谷TLE 7#include <bits/stdc++.h>using namespace std;const int N=205,M=4e4+5;int n,m,t,u,v,w,tot,l,r,mid原创 2020-09-01 23:27:15 · 207 阅读 · 0 评论 -
BZOJ 1585: [USACO09MAR]Earthquake Damage 2 G
题意:给出若干个不能被割的点,问:这若干个给出的点均不与1号点相连的最小代价是割掉几个其它点。1.由于每个点只能被割一次,或是不能被割,所以首先将每个点拆为入点和出点,对于能被割的点连流量为1的边,对于不能被割的点连流量为inf的边。2.对于若干个不能被割掉的点均需满足,所以从源点向不能被割掉的点连流量为inf的边。3.对于相邻的两个点之间,连流量为inf的边,表示路径不能被割掉,只有点才能被割掉。#include <bits/stdc++.h>using namespace std;原创 2020-06-10 00:20:46 · 152 阅读 · 1 评论 -
LOJ #6122. 「网络流 24 题」航空路线问题
仅简单介绍下最大费用最大流做法:1.我们可以把题意转换为:从1城市走两次到n城市,每个城市只能经过一次,最多可经过多少个城市。2.由于一个中间城市只能到达一次,所以对于中间城市,拆成入点和出点,流量为1;对于1和n,流量为2。3.由于需要求最多经过的城市数,所以对于每一个城市的入点和拆点之间,可以再连一条费用为1的边,做最大费用流。4.对于有航班的两个城市,连流量为1,费用为0的边。5.输出路径,则是考虑一下最大流跑完后,残余网络的性质即可dfs得到。6.对于有1直接到n的情况,需要做一个特判。原创 2020-06-10 00:12:09 · 631 阅读 · 0 评论 -
BZOJ 1189: [HNOI2007]紧急疏散evacuate
远古时期的HNOI,这题感觉内存开小了吧,虽然数据也不是满的。如果是满的数据,128MB根本不够啊。20 20.DDDDDDDDDDDDDDDDDD.D..........D.......DD.......D..........DD..................DD.....D...D........DD........D....D....DD.............D.....原创 2020-02-21 20:35:00 · 175 阅读 · 0 评论 -
BZOJ 1001: [BeiJing2006]狼抓兔子
最小割等于最大流,交一发最大流,妥妥地TLE。虽然对于此题最小割的复杂度是不正确的,但我们仍可以学到,对于无向图来说,建图的时候,直接建图(u,v,w),(v,u,w)即可,不需要建图:(u,v,w),(v,u,0),(v,u,w),(u,v,0)。#include <bits/stdc++.h>using namespace std;const int N=1e3+5,INF...原创 2019-11-17 19:20:11 · 144 阅读 · 0 评论 -
最大流和费用流模板
很多人都知道dinic最大流比EK最大流快,所以最大流往往写的是dinic。#include <bits/stdc++.h>using namespace std;const int N=1e4+5,M=1e5+5;int n,m,s,t,u,v,w;int dep[N];int cnt=1,head[N];struct edge{int next,to,w;}e[M&l...原创 2020-01-16 09:17:30 · 95 阅读 · 0 评论