![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
HT008_123
家人们点点关注叭
展开
-
[HDU 2448] Mining Station on the Sea
题目描述:有N个海港,N个船只,M个矿藏点,有K条海路连接矿藏点,每条路都有一个权值,并且海路双向,有P条路连接矿藏点和海港,只能从矿藏点驶向海港,每条路有一个权值,N条船初始在N个矿藏点上,现在要求你求出N个船进入N个海港的最小代价,保证有解。题目分析:不就是个费用流吗.首先,我们从源点向每个有船只的矿藏点连一条容量为1,权值为0的边然后根据矿藏点之间的路径信息,连接容量为INF,权值...原创 2019-08-06 17:39:03 · 147 阅读 · 0 评论 -
[Luogu 1361] 小M的作物
题目描述:qwq题目分析:同 BZOJ 3894 文理分科题目链接:Luogu 1361Ac 代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#define inf 0x7fffffffconst i...原创 2018-04-09 18:49:47 · 143 阅读 · 0 评论 -
[JLOI2010] 冠军调查
题目描述:qwq。题目分析:跟这道题目有个毛的不同啊qwq题目链接:BZOJ 2768Ac 代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#def...原创 2018-04-09 18:48:52 · 168 阅读 · 0 评论 -
[HNOI2007] 紧急疏散EVACUATE
题目描述:打死也不会想网络流的网络流题目.题目分析:07年的网络流都这难吗qwq 首先我们用BFS求出每个空地到每扇门的时间. 二分时间 如果空地->门的时间<=二分时间 空地->门连一条容量为1的边 S->每个空地连一条容量为1的边 对于每个门,我们拆成二分时间个点. 当前时间点门->T连一条容量为1的边,表示单位时间内门只能跑出去一个人...原创 2018-04-14 18:12:57 · 187 阅读 · 0 评论 -
[SDOI2006] 仓库管理员的烦恼
题目描述:雾。题目分析:这题目也太水了. 很明显是一个最小权的二分图匹配. 我们从物品向仓库建边,花费即为除了原本在本仓库的物品重量之和. 跑一下费用流就好了题目链接:Luogu 2457Ac 代码:#include <cstdio>#include <iostream>#include <cstring>...原创 2018-04-01 08:01:52 · 256 阅读 · 0 评论 -
[TJOI2013] 循环格
题目描述:qwq.题目分析:考虑到一个完美循环图每个点的入度与初度均为1 那么我们就可以做 最小权二分图匹配 把每个点拆成入点与出点 然后从每个格子向四周的格子连容量为1的边,与原方向相同则花费为0,否则为1 搞一下超级源汇,做最小权二分图匹配即可.题目链接:Luogu 3965 BZOJ 3171Ac 代码:#include <cstd...原创 2018-04-08 10:32:08 · 178 阅读 · 0 评论 -
[ZJOI2007] 矩阵游戏
题目描述:雾。题目分析:既然我们要求每行每列都要有一个 1 ,那么我们就可以这样进行建立了这个二分图。 左边有 n 个点,代表行,右边有 n 个点,代表列。 做这题的主要目的是打板子 二分图匹配用的Dinic题目链接:BZOJ 1059 这里写链接内容Ac 代码:#include <iostream>#include <c...原创 2018-03-25 16:35:36 · 194 阅读 · 0 评论 -
[六省联考] 寿司餐厅
题目描述:太长了,不描述!题目分析:看题面看了10min才反应过来这是个最大权值闭合子图的问题 应用网络流最小割的模型来解决本问题 首先,每个寿司编号即为器材,代价为 w[i]*w[i]*m 那么我们由每个寿司编号向汇点链接一条容量为w[i]*w[i]*m 每个寿司一定需要一个寿司编号,代价为 -w[i] 那么我们由寿司向寿司编号连一条inf的边,由寿司向汇点连一条容量为...原创 2018-03-18 09:02:02 · 175 阅读 · 0 评论 -
[Scoi2015] 小凸玩矩阵
题目描述:给出 n*m 个数 每一行和每一列只能选一个数,求能选出最小的第K个数是什么题目分析:先二分K S -> 每一行 cap=1 每一列 -> T cap=1 a[i][j]<=mid i->j+n cap=inf 然后判定即可题目链接:Luogu 4251 BZOJ 4443Ac 代码:#include <cst...原创 2018-03-11 16:47:49 · 195 阅读 · 0 评论 -
[国家集训队] 部落战争
题目描述:语死早.题目分析:可以在任何地方出发,那么就转换成了最短路径覆盖问题题目链接:Luogu 2172Ac 代码:// luogu-judger-enable-o2#include <cstdio>#include <iostream>#include <queue>#include <cstrin...原创 2018-03-16 14:26:35 · 224 阅读 · 0 评论 -
[ZJOI2009]狼和羊的故事
题目描述:雾。题目分析:要让羊和狼之间不发生冲突,很明显是个最小割问题 挖掘栅栏的本质:只能建在相邻两个,且建好后使得狼和羊之间不存在通路。而割的定义是:使S集和T集不存在通路。而题目又要求建的栅栏最少,于是就是最小割问题了。从源点向所有狼连一条∞的边,从所有羊向汇点连一条∞的边,这样就能保证狼和羊都在不同的点集里。然后再从狼到相邻的羊和空地,空地到相邻的空地和羊连一条流量为...原创 2018-03-16 14:21:27 · 449 阅读 · 0 评论 -
[BZOJ 3894] 文理分科
题目描述:大雾.题目分析:对于二选一找最大价值,很明显是一个最小割问题。 但是满足集合要求带来的附加代价怎么求呢? 我们新建两个集合节点, S-X1 容量为集合1附加代价 Y1-T 容量为集合2附加代价 X1->2 容量为inf 2->Y1 容量为inf 如果我们割掉红边,说明2节点属于S集合 这时候如果我们割掉紫色边,仍存在s->2->...原创 2018-04-09 18:50:09 · 221 阅读 · 0 评论 -
[TJOI2015] 线性代数
题目描述:qwq.题目分析:好神的题啊,不会线代怎么办TAT D=∑ni=1∑nj=1ai∗aj∗bij−∑ni=1ai∗ciD=∑i=1n∑j=1nai∗aj∗bij−∑i=1nai∗ciD=\sum_{i=1}^{n}\sum_{j=1}^{n}a_i*a_j*b_{ij}-\sum_{i=1}^na_i*c_i 也就是如果选bij就得选ai和aj,选ai又得选cibij就...原创 2018-04-09 18:50:51 · 173 阅读 · 0 评论 -
[HDU 6582] Path
题目描述:给你一张图,你可以堵上一条边,代价就是这条边在长度,问你如何用最小的代价使得1->n不能走最短路!题目分析:首先我们正反跑两次SPFA,求出那条边在最短路上,然后把这些边扔进最大流里,跑个最小鸽就好了。题目链接:HDU 6582代码:#include <cstring>#include <algorithm>#include <ios...原创 2019-08-04 16:58:34 · 178 阅读 · 0 评论 -
[HNOI2013] 切糕
题目描述:切蛋糕!题目分析:这数据范围,还有求最小的值,基本上最小割没跑了. 先不考虑限制. 我们新建一层虚拟蛋糕 从下面一层向上面一层连容量为花费的边 从s向1层连容量为inf的边,代表不可割 从虚拟层向t连容量为inf的边,代表不可割 然后…就不会啦qwqqqq 怎么考虑限制哇 我们从本点向四周高度为h-d的点连容量为inf的边就可以限制住了! 为什么呢? ...原创 2018-11-20 19:27:15 · 285 阅读 · 0 评论 -
[BJOI 2006] 狼抓兔子
题目描述:兔兔那么可爱,为啥要抓!题目分析:裸的最小割…题目链接:BZOJ 1001 Luogu 4001Ac 代码:#include <cstdio>#include <cstring>#include <queue>#include <iostream>const int maxm=3*1100*...原创 2018-05-07 15:04:39 · 201 阅读 · 0 评论 -
[BJOI2012] 连连看
题目描述:QAQ…题目分析:拆点 N^2 枚举建边 跑个最大费用流就好了…题目链接:BZOJ 2661 Luogu 4134Ac 代码:#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cm...原创 2018-05-05 09:46:31 · 299 阅读 · 0 评论 -
[NOI 2010] 美食节
题目描述:QAQ..题目分析:思路见 SCOI2007 修车 不同点1:每道菜有P[i]个,我们只需要把每个菜的点到T的边容量改成P[i]就好了 不同点2:极限数据下,我们图中的边的数量超过了6e6,导致我们SPFA只能得60分… 观察可得,这道题里,按照我们的模型,最多出现800条增广路,而且每次增广都是一的流量 也就是说我们实际上跑800次spfa即可,那么我们就得想个...原创 2018-05-09 15:20:03 · 157 阅读 · 0 评论 -
[SDOI2013] 费用流
题目描述:给出一个流量网络,给出参数费用 T题目分析:Bob/肯定会吧全部的T放在最大流量边上,所以我们必须让最大流量边最小 先跑最大流,然后二分最大流量边,看新的网络是否最大流等于原来网络的最大流题目链接:BZOJ 3130 Luogu 3305Ac 代码:#include <cstdio>#include <iostream&...原创 2018-03-29 09:08:44 · 261 阅读 · 0 评论 -
[SDOI2014] LIS
题目描述:qwq题目分析:求最小字典序最小割 如何判断一条边是否是割边是很容易的 只需要从u出发看是否能找到一条u到v的增广路,如果存在这样的一条路径 说明该边不是割边 那么我们按照C的大小来枚举每一条边 如果该边是割边 那么我们就要把它从图中删除(这样可以让一些割边不再是满流的边 这些删除的割边都是一定不与当前割边在同一割集中的割边 要让这样的边不能入选) 那么我们要怎样最...原创 2018-04-11 14:12:44 · 203 阅读 · 0 评论 -
[AHOI 2009] 最小割
题目描述:给出一个网络 起点S以及汇点T 求 1:第i条边是否可能是最小割集的元素 2:第i条边是否一定是最小割集的元素题目分析:WTF,我不想学图论了,放我走吧 嘤嘤嘤 这个问题叫做最小割唯一性问题 首先我们先在给出的网络上跑一遍网络流 1.不满流的边一定不行… 2.满足1的情况下,如果两个端点在一个强连通分量里,也是不行的. 边的两点还能相互到达 说明它们在割...原创 2018-04-03 16:23:23 · 253 阅读 · 0 评论 -
[SDOI2010] 星际竞速
题目描述:求跑完N个点的最小时间题目分析:神似最短路径覆盖 看到每个点经过一次,那就是cap的限制 花费即费用流 考虑如何建模. 先拆点 S-i的出点容量为1,花费为爆发费用 i的出点-T容量为1,花费为0 S向i的入点连容量为1,花费为0的边 u->v的出点连容量为1,花费为高速航行的费用 考虑由于求最大流,所以所有点的出点向汇点的连边都会流满。每个点的出...原创 2018-04-10 09:43:01 · 258 阅读 · 0 评论 -
[HNOI2001] 软件开发
题目描述:雾题目分析:最小费用最大流 原题解 拆点,每个点拆成入点和出点。显然,要满足每天的餐巾供应,于是有附加源汇ST,S向入点引一条容量为ni,费用为0的边,出点向T引一条容量为ni,费用为0的边。若满足题目要求,这必有所有出点到T的弧满载,为了保证这一点,由S向出点引容量为无穷,费用为f的边。又因为每天没用完的餐巾可以留到下一天,所以每天的入点向下一天的入点引...原创 2018-04-10 09:42:17 · 188 阅读 · 0 评论 -
[SDOI2015] 星际战争
题目描述:有N个防御机器人,每个机器人有一个防御值K 有M个炮塔,每个炮塔单位时间内可以造成X的伤害 这M个炮塔可以攻击一些机器人,也有一些不能攻击。 求把这些机器人全部打败的时间最少是多少?题目分析:看数据范围和题目要求,很明显就是网络流的模型了. 首先二分一个答案 t 那么每个炮塔最多可以造成 t*X 的伤害 由 S -> 炮塔 连容量为 t*X 的 边 对于...原创 2018-03-10 08:20:11 · 216 阅读 · 0 评论 -
[Luogu P2057] 善意的投票
Luogu 类型:最小割 我们可以把两者不同的意见看做两个集合,两个集合中间有边连接。 一个st-cut(简称割cut)会把有向图的顶点分成两个不相交的集合,其中s在一个集合中,t在另外一个集合中。 这道题目就是让我们求最小割啦。 从S向喜欢睡觉的同学连边1 从不喜欢睡觉的小朋友向T连边1 然后朋友之间连双向边 最小割==最大流 求最大流即可。#include #inclu原创 2018-01-16 20:59:16 · 291 阅读 · 0 评论 -
[Luogu P1402] 酒店之王
Luogu 类型:网络最大流 建模分析: 首先,我们要拆人,却不能拆房间和菜,因为给我们的关系是人与房间和人与菜的关系,我们只能用人当做中间桥梁联系房间与菜。 那么思路就很清晰明了了。 源点向每个房间连一条容量为1的边 喜欢的房间向人的入点连一条容量为1的边 人的入点向出点连一条容量为1的边 人的出点向喜欢的菜连一条容量为1的边 菜向汇点连一条容量为1的边 跑网络最大流即可原创 2018-01-16 20:25:33 · 190 阅读 · 0 评论 -
Van♂音游
题目链接题目分析:对于肉肉手,我们就直接从源点向其连一条容量为5的边 对于每个肉肉手可以覆盖到的块,向其连一条容量为1的边 然后对于每个块,向终点连一条容量为1的边 对于虚幻手,我们可以加入图中,也可以直接进行特判。 对于只有肉肉手跑出的答案,我们直接在其基础上加上虚幻手的数量 与块的总数取小就是答案了。Ac Code:#include #include原创 2018-01-23 21:00:38 · 517 阅读 · 0 评论 -
[CQOI2015]网络吞吐量
这题我Debug了2小时,心情复杂。 这题建模不需要说了。 讲一下如何处理即可。 最短路? SPFA啊 先把原图存下来。 咋判断一个点是不是在最短路径上? 枚举点的邻接点 若dis[to]=dis[from]+cost即为最短路 拆点,注意1,n限制不算。 还有要开long long,inf要大一些 Luogu BZOJ COGS#include #include原创 2018-01-14 20:39:47 · 234 阅读 · 0 评论 -
P3163 [CQOI2014]危桥
类型:网络最大流 建模分析: 普通的边按图中说的建立就好。 由于是来回 我们需要 从源点向a1,b1分别建立一条容量为 2 * an 和 2 * bn的边。 从a2 ,b2 向汇点分别建立一条容量为 2 * an和2 * bn的边。 然后跑一下网络最大流 看看最大流是不是 2*(an+bn) 你以为这就完了? 不存在的,上述的建图方式如果在a1跑到 b2的话,是不对的,但是我们判断出原创 2018-01-14 16:40:34 · 160 阅读 · 0 评论 -
[CQOI2009]DANCE跳舞
首先,将问题换个问法。 即Ans支舞曲是否可以跳完。 如果Ans支舞曲可以跳完,那么匹配数==Ans*n 我们只需要不停地枚举Ans,直到跳不完为止,那么Ans-1即为答案。 建模分析: 首先 我们把一个人分为喜欢和不喜欢两个点。 从源点向男生喜欢连一条容量为Ans的边,模拟跳Ans支舞曲。 对于女生也是如此。 不喜欢上限为K的限制,我们只需要从不喜欢向喜欢边连一条容量为K的边即可原创 2018-01-14 14:28:36 · 243 阅读 · 0 评论 -
[USACO07OPEN]吃饭Dining
洛谷翻译也是醉。 找了个翻译版本(好像是BZOJ,不过好像是权限题目)Description农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. 农夫JOHN做了F (1 Input第一行: 三个数: N, F, 和 D第2..N+1行: 每一行由两原创 2018-01-14 10:56:00 · 210 阅读 · 0 评论 -
[SCOI2007]修车
类型:最小费用流 建模真的绝了。 建模分析: 设修车师傅为A,正在修车B 修车B只会对修车师傅A在修完之后的修车人产生等待时间,而不会对修车师傅A修此车之前的修车人产生影响 设修完车B后还有K个人,那么修这个车所产生的等待时间为 K*time[B][A] 所以把每个修车师傅拆成N个人,表示第几次修的车。 然后搞搞源汇点就行了 Lougu BZOJ COGS#include原创 2018-01-14 09:59:11 · 339 阅读 · 0 评论 -
[ZJOI2009]假期的宿舍
类型:网络最大流 建图方式: 若此人为学生,则从他的床向汇点连一条容量为1的边 若此人为学生且没有走 则从源点向他连一条容量为1的边 从他向他的床连一条容量为1的边 若此人不是学生 则从源点向他连一条容量为1的边 若两人认识,则从此人向对方的床上连一条容量为1的边 最后判断跑出的匹配数是否等于总的在校人数即可。COGS BZOJ 洛谷#include #include原创 2018-01-14 08:55:37 · 292 阅读 · 0 评论 -
教辅的组成
类型:最大流 类似于二分图匹配,但是对于书要拆点,否则会多次用。#include #include #include #include #define il inlineusing namespace std;const int inf=0x7fffffff;const int maxm=110000;int head[maxm],to[maxm*2],cap[maxm原创 2018-01-12 11:08:09 · 262 阅读 · 0 评论 -
网络流之最小路径覆盖问题
问题:给你若干个点和边,问最少用几条路可以覆盖掉全图。 问题转化:网络流 题目传送门 分析: 我们首先将原图用n条路径覆盖,每条边只经过每个节点。 现在尽量合并更多的路径(即将两个路径通过一条边首尾相连)。 可以知道,每合并两条路径,图中的路径覆盖数就会减少1。 所以我们只需要利用网络流合并相关的路径即可。答案求解: 首先将每个节点拆成(Xi,Yi)两个节点,建立源点和汇点,分原创 2018-01-08 09:56:26 · 379 阅读 · 0 评论 -
[NOI2006] 最大获利
题目描述:有N个中转站,每一个中转站修建需要耗费一定费用。 有M个用户人群,每个用户人群要通话需要有A B 两个中转站,满足这个用户人群后会获利P。 问最大获利是多少?题目分析:有正权,有负权,还有依赖关系,决定就是你啦,最大权值闭合子图! 建模就不分析了,套路题目。题目链接:Luogu 4174 BZOJ 1497 COGS 28代码实现:#includ原创 2018-01-31 20:52:09 · 198 阅读 · 0 评论 -
[Luogu P2711] 小行星
QwQ 类型:最小割 建模分析:若我们把源点->星->汇点连起来,那么这个问题等同于最小割。 S−>X(1)−>Y1(1)−>Y2(1)−>Z(1)−>TS->X(1)->Y_1(1)->Y_2(1)->Z(1)->T 因为每个坐标只能删1次,所以要把Y拆点#include #include #include #include #define il inlineusing原创 2018-01-19 10:42:02 · 248 阅读 · 0 评论 -
Reactor Cooling(无源汇点含有上下界的最大流)
题目链接 题目的简单描述: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。本题属于无源汇点含有上下界的最大流模型。 原来的最大流模原创 2018-01-10 16:31:35 · 401 阅读 · 0 评论 -
深海机器人问题
大修前的最后一题,一会就放假啦,开心类型:费用流建模分析:因为在每条道路上都有权值,即可以收集的价值,很明显是个最大费用流问题. 我们先从源点向每个出发点建一条容量为在本出发点出发的机器人数量,价值为0的边 然后对于分别向上面的点和右面的点建立一条容量为1,价值为-c的边 但是不要忘了我们还要再建一条容量为inf,价值为0的边,来模拟再次经过的过程 然后在终点向汇点建一条容量为原创 2018-01-26 14:29:00 · 401 阅读 · 0 评论 -
最长k可重区间集问题
我们既要限制k可重,又要求出区间长,涉及两个量可以选择最大费用最大流。考虑用流量限制k,而每个开区间长作为区间对应弧的费用。 首先对区间端点坐标离散化,对于离散化后的这些点,相邻点连容量INF,费用0的边,这些边将作为联系区间弧的桥梁。对于每个区间,从左端点到右端点连接流量1,费用为原始区间长度的边,确保只被选择1次且选上后将本区间的长度加入答案。另外源点S到最左点连容量k,费用0的边,控制k可原创 2018-01-26 10:09:17 · 248 阅读 · 0 评论