
网络流
网络流
correct!
It's better to burn out than to fade away.
展开
-
車的放置 最大流求最大匹配
重点说一下二分图的两个部分,可以明确的是,車所在的一行一列不能再放置了,可以将这个位置,看作是車所在的行和列之间的连线,由此我们将行与列分开,可以看出,行的集合内部,没有连线,即没有哪一个車同时对多行起作用,同理,列也是如此,也就是说我们得到了一张二分图。如果某一个点不能放置,可以看作这一行和这一列之间没有边连接。然后根据这个建图,求最大匹配就是答案。 #include <bits/stdc++.h> using namespace std; #define mem(a, b) memset(a原创 2020-08-19 21:51:58 · 117 阅读 · 0 评论 -
棋盘覆盖 最大流求解最大匹配
一个二分图最大匹配的问题,依然是分成两部分,数字坐标和为奇数的为一部分,和为偶数的为另一部分。这两部分各自内部没有连线,可以作为二分图。 二分图最大匹配可以用最大流解决。可以引进一个源点sss,从sss出发向二分图的左部分连线(有向边),把从左部分连向右部分的双向边换成从左连向右边的单向边,然后从二分图的右部分的每个点出发,连向汇点ttt,图中所有边的权值都是1,这样一个图就建好了。 然后跑一边~~沙(Sand)盒(Box)~~的Dinic,最大流量就是答案。 #include <bits/stdc+原创 2020-08-19 18:11:04 · 274 阅读 · 0 评论 -
多路增广 Dinic算法
Dinic多路增广算法原创 2020-08-11 13:50:25 · 516 阅读 · 0 评论 -
最大流中反向边的作用和意义
流量需要满足三个限制条件: 容量限制 f(u,v)≤c(u,v)f(u,v)\leq c(u,v)f(u,v)≤c(u,v) 流量守恒 ∑(S,v)ϵE=∑(u,T)ϵE\sum_{(S,v)\epsilon E}=\sum_{(u,T)\epsilon E}∑(S,v)ϵE=∑(u,T)ϵE 斜对称 f(x,y)=−f(y,x)f(x,y)=-f(y,x)f(x,y)=−f(y,x) 斜对称的性质就决定了最大流中需要存在反向的流量(反向边),蒟蒻如我,不懂这样的反向流量的意义何在,于是查了一下资料转载 2020-08-09 17:14:12 · 906 阅读 · 0 评论 -
EK最大流
EK最短增广路算法原创 2020-08-11 10:02:47 · 169 阅读 · 0 评论