![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 78
_Ark
这个作者很懒,什么都没留下…
展开
-
LOJ 6033. 「雅礼集训 2017 Day2」棋盘游戏 (二分图匹配问题)
题面 LOJ传送门 题解 感觉没什么方法可以做。 但是有巧妙的解法(套路)。 我们对于所有空地,相邻两个空地连边,显然是二分图。 然后求出一个最大匹配。如果Alice把一个未匹配点作为起点,那么Bob每一步只能走到一个新的匹配了的位置,那么Alice只要走向这个位置对应匹配的位置就可以了。而Bob如果走向了一个未匹配点,就相当于找到了一条增广路,说明这不是一个最大匹配,矛盾。 那么只需要求出那些非...原创 2019-12-27 12:52:40 · 301 阅读 · 0 评论 -
NOI2008 志愿者招募 (费用流)
题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者。经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人。 布布通过了解得知,一共有M 类志愿者可以招募。其中第i 类可以从第Si 天工作到第Ti 天,招募费用是每人Ci 元。新官上任三把火,为了出色地完成自己的工作,布布希望用尽量少的费用...原创 2019-12-05 15:33:45 · 139 阅读 · 0 评论 -
上下界网络流总结
首先任何有下界的边都要先记录下界的入度和与出度和,记作ininin和outoutout。 然后对于点iii: 如果in[i]>out[i]in[i]>out[i]in[i]>out[i],则建边(ss→i,in[i]−out[i])(ss\to i,in[i]-out[i])(ss→i,in[i]−out[i]) 如果in[i]<out[i]in[i]<out[i]i...原创 2019-12-04 21:54:45 · 215 阅读 · 0 评论 -
BZOJ 3698: XWW的难题(有源汇上下界最大流)
题面 XWW是个影响力很大的人,他有很多的追随者。这些追随者都想要加入XWW教成为XWW的教徒。但是这并不容易,需要通过XWW的考核。 XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A,满足XWW性。 称一个N*N的矩阵满足XWW性当且仅当:(1)A[N][N]=0;(2)矩阵中每行的最后一个元素等于该行前N-1个数的和;(3)矩阵中每列的最后一个元素等于该列前N-1个数的和。 现在...原创 2019-12-04 17:19:17 · 213 阅读 · 0 评论 -
BZOJ 2502 清理雪道(有源汇上下界最小流)
题面 滑雪场坐落在FJ省西北部的若干座山上。 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向。 你的团队负责每周定时清理雪道。你们拥有一架直升飞机,每次飞行可以从总部带一个人降落到滑雪场的某个地点,然后再飞回总部。从降落的地点出发,这个人可以顺着斜坡向下滑行,并清理他所经过的雪道。 由于每次飞行的耗费是固定的,为了最小化耗费,你想知道如何用最少的...原创 2019-12-04 16:00:14 · 122 阅读 · 0 评论 -
BZOJ 2406 矩阵(二分+有源汇上下界可行流)
题意 题解 二分答案+可行流判断。 模板题。 CODE #include <cstdio> #include <cstring> #include <algorithm> #include <cctype> #include <queue> using namespace std; template<class T>inli...原创 2019-12-04 15:55:14 · 125 阅读 · 0 评论 -
UVALive 5099 Nubulsa Expo(全局最小割)
题面 vjudge传送门 题解 论文题 见2016绍兴一中王文涛国家队候选队员论文《浅谈无向图最小割问题的一些算法及应用》4节 全局最小割 板题 CODE 暴力O(n3)O(n^3)O(n3) 用堆优化可以做到O(nmlog)O(nmlog)O(nmlog) 这里只写了暴力 #include <bits/stdc++.h> using namespace std; template&l...原创 2019-11-30 17:34:03 · 139 阅读 · 0 评论 -
Luogu SP839 OPTM - Optimal Marks(按位最小割)
这道题和 BZOJ 2400 是一道题,不多讲了 CODE #include <cstdio> #include <cstring> #include <vector> #include <queue> #include <algorithm> using namespace std; typedef long long LL; temp...原创 2019-03-13 11:09:02 · 173 阅读 · 0 评论 -
BZOJ 3275: Number (二分图最小割)
题意 有nnn个数,其中同时满足下面两个条件的数对不能同时选,求选出一些数让和最大. 若两个数aaa,bbb同时满足以下条件,则aaa,bbb不能同时被选 存在正整数ccc,使a∗a+b∗b=c∗ca*a+b*b=c*ca∗a+b∗b=c∗c gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1 分析 看到这熟悉二元关系,就能够用最小割做了.但是乍一看不是二分图的模型,就不能直接...原创 2019-03-13 15:08:19 · 204 阅读 · 0 评论 -
BZOJ 2229 / Luogu P3329 [ZJOI2011]最小割 (分治最小割板题)
题面 求所有点对的最小割中<=c的数量 分析 分治最小割板题 首先,注意这样一个事实:如果(X,Y)是某个s1-t1最小割,(Z,W)是某个s2-t2最小割,那么X∩Z、X∩W、Y∩Z、Y∩W这四项不可能均非空。也就是说,最小割不可能相互跨立。 这个蕴含了,最多一共有N-1个不同的s-t最小割。只需把这些割找出来即可。 寻找的方法:首先,在V中任意找两个点a,b,求最大流,把V划分为割X-Y...原创 2019-03-13 16:51:50 · 101 阅读 · 0 评论 -
BZOJ 1283: 序列 (最大费用流)
题意 有n个正整数,要选取里面的一些数,在保证每m个连续的数中最多选k个的情况下,使得得到的值最大. 分析 我们可以把问题先转化为选k次,每一次每m个数只能选一个.那么根据贪心的策略,每m个里一定会选一个.那么先建一个源点S,一个汇点T,连边就先用容量为k,费用为0的边把S,数组,T顺次连起来,然后每一个位置i向i+m(如果>n就连向T)连一条容量为1,费用为a[i]的边.做最大费用流即可....原创 2019-03-19 09:04:09 · 135 阅读 · 0 评论 -
BZOJ 3630: [JLOI2014]镜面通道 (网络流 +计算几何)
水能流过的地方光都能达到 呵呵.jpg 那就是裸的最小割(割开上边界和下边界)了… 判矩形和圆相交的时候就用圆心对矩形求一次点到矩形的最近距离(类似KD树的预估函数). CODE #include <vector> #include <cstdio> #include <cstring> #include <algorithm> using na...原创 2019-04-03 22:29:43 · 115 阅读 · 0 评论 -
ZrOJ #878. 小K与赞助 (网络流)
傻逼最大费用流: . 两棵树分别流,最后汇合。 CODE #include <bits/stdc++.h> using namespace std; #define pb push_back const int MAXP = 1510; const int MAXN = 505; const int MAXM = 5005; const int INF = 0x3f3f3f3f; in...原创 2019-08-09 22:57:26 · 210 阅读 · 0 评论 -
BZOJ 2400: Spoj 839 Optimal Marks (按位最小割)
题面 一个无向图,一些点有固定权值,另外的点权值由你来定. 边的值为两点的异或值,一个无向图的值定义为所有边的值之和. 求无向图的最小值 分析 每一位都互不干扰,按位处理. 用最小割算最小值 保留原图的边,容量为1 如果当前点这一位是1,就从S连向当前点,容量为∞\infty∞ 如果当前点这一位是0,就从当前点连向T,容量为∞\infty∞ 那么这样一来,分在S一边就表示选,分在T一边就表示不选...原创 2019-03-13 11:07:13 · 177 阅读 · 0 评论 -
BZOJ 2127 / Luogu P1646 [国家集训队]happiness (最小割)
题面 BZOJ传送门 Luogu传送门 分析 这道题又出现了二元关系,于是我们只需要解方程确定怎么连边就行了 假设跟SSS分在一块是选文科,跟TTT分在一块是选理科,先加上所有的收益,再来考虑如何让需要减去的代价最小.我们来看看代价的方程 定义AAA表示选文科的收益,BBB表示选理科的收益,有: a+b=Ax+Ay+Ax,y\large a+b=A_x+A_y+A_{x,y}a+b=Ax+A...原创 2019-03-12 22:37:52 · 156 阅读 · 0 评论 -
BZOJ 2039 / Luogu P1791 [2009国家集训队]employ人员雇佣 (最小割)
题面 BZOJ传送门 Luogu传送门 分析 考虑如何最小割建图,因为这仍然是二元关系,我们可以通过解方程来确定怎么建图,具体参考论文 &amp;lt;&amp;lt;浅析一类最小割问题 湖南师大附中 彭天翼&amp;gt;&amp;gt; 那么我们来看看怎么解方程 设存在一对二元关系&amp;amp;lt;x,y&amp;amp;gt;&amp;amp;lt;x,y&amp原创 2019-03-12 21:15:26 · 171 阅读 · 0 评论 -
BZOJ 3218 A + B Problem (可持久化线段树+最小割)
做法见dalao博客 geng4512的博客, 思路就是用线段树上的结点来进行区间连边.因为有一个只能往前面连的限制,所以还要可持久化.(duliu) 一直以来我都是写dinicdinicdinic做最大流,感觉加上弧优化等等效率还是蛮高的…但是这道题点数边数都是 nlognlognlog 级别的,让我发现还是SAPSAPSAP最快啊… 这是dinicdinicdinic AC代码(加上弧优化...原创 2019-03-13 21:06:36 · 214 阅读 · 0 评论 -
Dinic 与 SAP(ISAP?) 模板
发一个最大流模板 DinicDinicDinic //vis为int类型 //sz为总点数 namespace Dinic { inline bool bfs() { int head = 0, tail = 0; vis[S] = ++cur; q[tail++] = S; dis[S] = 0; while(head &amp;amp;amp;amp;lt; tail) { ...原创 2019-03-13 21:41:35 · 215 阅读 · 0 评论 -
BZOJ 1458 / Luogu P4311 士兵占领 (上下界最小流 / 直接最大流)
做法1:上下界最小流 先来一发上下界最小流,思路比较暴力,就是把行和列看作n+mn+mn+m个点,(i,j)(i,j)(i,j)如果能占领就从第iii行向第jjj列连一条边,上界为1下界为0;然后从sss向每一行连边,上下界就是题目要求的范围;同理从每一列向ttt连边,上下界为题目需要的.做上下界最小流就行了. 不会的去这里liu_runda的博客 Upd:Upd:Upd:这道题跟 BZOJ50...原创 2019-03-14 20:25:06 · 173 阅读 · 0 评论 -
BZOJ 1565 / P2805 [NOI2009]植物大战僵尸 (最大权闭合子图 最小割)
题意 自己看吧 BZOJ传送门 分析 … 这道题其实就是一些点,存在一些二元限制条件,即如果要选uuu则必须选vvv.求得到的权值最大是多少. 建一个图,如果选uuu必须选vvv,则uuu向vvv连边.那么一个点如果要选肯定所有儿子都要选(也就是整棵子数都要选).这就是一个最大权闭合子图的模型. 可以发现,如果一个点数大于1的强连通分量每个点都不可选.那么去挑这些点,同时也可以去掉这些点的祖先....原创 2019-03-14 22:28:35 · 255 阅读 · 0 评论 -
BZOJ 2502 清理雪道/ Luogu P4843 清理雪道 (有源汇上下界最小流)
题意 有一个有向无环图,求最少的路径条数覆盖所有的边 分析 有源汇上下界最小流板题,直接放代码了,不会的看dalao博客:liu_runda 有点长,讲的很好,静心看一定能看懂 CODE #include <bits/stdc++.h> using namespace std; typedef long long LL; template<typename T>inline...原创 2019-03-11 15:46:08 · 138 阅读 · 0 评论 -
最小费用流模板(zkw与spfa)
“zkw” 费用流算法在哪些图上慢(摘自https://www.cnblogs.com/ECJTUACM-873284962/p/7744943.html) 实践中, 上面的这个算法非常奇怪. 在某一些图上, 算法速度非常快, 另一些图上却比纯 SPFA 增广的算法慢. 不少同学经过实测总结的结果是稠密图上比较快, 稀疏图上比较慢, 但也不尽然. 这里我从理论上分析一下, 究竟这个算法用于哪...原创 2018-09-26 21:41:29 · 603 阅读 · 0 评论 -
BZOJ 3774 最优选择 (最小割)
题面 中文题面,不解释liao:传送门 分析 好难啊,好神啊,这题我理解了好久(可能还没有真正理解?) 我们先假设所有点都满足条件得到了回报,回报之和为sumsumsum,那么最终的答案一定是sumsumsum减去一部分代价再减去一部分没有满足的点的回报.我们的任务就是求减去的一坨的最小值.所以我们将这个问题转化为求最小割的问题. 现在看看怎么转化.首先因为是四联通,所以可以像国际象棋棋盘一样黑白...原创 2019-03-11 19:49:06 · 207 阅读 · 0 评论 -
占位
…原创 2019-03-12 10:06:09 · 106 阅读 · 0 评论 -
BZOJ 3931 / Luogu P3171 [CQOI2015]网络吞吐量 (最大流板题)
题面 中文题目,不解释: BZOJ传送门 Luogu传送门 分析 这题建图是显然的,拆点后iii和i′i&amp;amp;amp;amp;#x27;i′连容量为吞吐量的边,根据题目要求1,n1,n1,n的吞吐量看作∞\infty∞. 然后用distdistdist表示到111的最小距离,对于满足dist[v]=dist[u]+w[u,v]dist[v]=dist[u]+w[u,v]dist[v]=dist[u]+w[u,...原创 2019-03-12 08:39:06 · 157 阅读 · 0 评论 -
BZOJ 3903 反垄断 (最大流推的结论题)
题目 中文题目,不解释: BZOJ传送门 分析 这道题BZOJ上也只有几个人过…奇怪了 下面是正解 原问题为一个二分图边染色问题。首先考虑最好情况。最理想情况的分配为:设一个点xxx的度为dgr(x)dgr(x)dgr(x)。那么若dgr(x)dgr(x)dgr(x)为ttt的倍数,那么与xxx相连的边恰好平均分配给ttt个公司,每个公司dgr(x)/tdgr(x)/tdgr(x)/t个;如果不...原创 2019-03-12 10:41:05 · 217 阅读 · 0 评论 -
BZOJ 2095 [Poi2010]Bridges (二分+最大流判断混合图的欧拉回路)
题面 nnn个点,mmm条双向边(正向与反向权值不同),求经过最大边权最小的欧拉回路的权值 分析 见 commonc大佬博客 精髓就是通过最大流调整无向边的方向使得所有点的入度等于出度 CODE #include <cstdio> #include <cstring> #include <algorithm> using namespace std; tem...原创 2019-03-12 14:34:03 · 122 阅读 · 0 评论 -
BZOJ 3894 / Luogu P4313 文理分科 (拆点最小割)
题面 中文题面… BZOJ 传送门 Luogu 传送门 分析 这道题类似于BZOJ 3774 最优选择,然后这里有一篇博客写的很好… Today_Blue_Rainbow’s Blog 应该看懂了吧…不懂的画画图,分分情况会发现…这连边…好妙啊 CODE #include <cstdio> #include <cstring> #include <algorithm&...原创 2019-03-12 15:38:57 · 137 阅读 · 0 评论