最大流
HT008_123
家人们点点关注叭
展开
-
[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 · 197 阅读 · 0 评论 -
[JLOI2010] 冠军调查
题目描述:qwq。题目分析:跟这道题目有个毛的不同啊qwq题目链接:BZOJ 2768Ac 代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#def...原创 2018-04-09 18:48:52 · 161 阅读 · 0 评论 -
[SDOI2006] 仓库管理员的烦恼
题目描述:雾。题目分析:这题目也太水了. 很明显是一个最小权的二分图匹配. 我们从物品向仓库建边,花费即为除了原本在本仓库的物品重量之和. 跑一下费用流就好了题目链接:Luogu 2457Ac 代码:#include <cstdio>#include <iostream>#include <cstring>...原创 2018-04-01 08:01:52 · 251 阅读 · 0 评论 -
[ZJOI2007] 矩阵游戏
题目描述:雾。题目分析:既然我们要求每行每列都要有一个 1 ,那么我们就可以这样进行建立了这个二分图。 左边有 n 个点,代表行,右边有 n 个点,代表列。 做这题的主要目的是打板子 二分图匹配用的Dinic题目链接:BZOJ 1059 这里写链接内容Ac 代码:#include <iostream>#include <c...原创 2018-03-25 16:35:36 · 187 阅读 · 0 评论 -
[SDOI2016 Round1] 数字配对
题目描述:每个点有三个参量A,B,C B为数量 任意两个点之间若 Ai/AjAi/AjA_i/A_j为一个质数,则这两个点可以配对,获得 Ci∗CjCi∗CjC_i*C_j 的价值 问在总价值不小于0的前提下,最多可以进行多少次配对.题目分析:N2N2N^2 枚举点 暴力判断 连边 建图方式 将每个点拆成两个点 S−>D1,Cap=B,Cost=0S−>D...原创 2018-03-06 09:03:44 · 236 阅读 · 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 · 189 阅读 · 0 评论 -
[国家集训队] 部落战争
题目描述:语死早.题目分析:可以在任何地方出发,那么就转换成了最短路径覆盖问题题目链接:Luogu 2172Ac 代码:// luogu-judger-enable-o2#include <cstdio>#include <iostream>#include <queue>#include <cstrin...原创 2018-03-16 14:26:35 · 220 阅读 · 0 评论 -
[ZJOI2009]狼和羊的故事
题目描述:雾。题目分析:要让羊和狼之间不发生冲突,很明显是个最小割问题 挖掘栅栏的本质:只能建在相邻两个,且建好后使得狼和羊之间不存在通路。而割的定义是:使S集和T集不存在通路。而题目又要求建的栅栏最少,于是就是最小割问题了。从源点向所有狼连一条∞的边,从所有羊向汇点连一条∞的边,这样就能保证狼和羊都在不同的点集里。然后再从狼到相邻的羊和空地,空地到相邻的空地和羊连一条流量为...原创 2018-03-16 14:21:27 · 438 阅读 · 0 评论 -
[AHOI2014/JSOI2014] 支线剧情
题目描述:给定一个DAG,1为起始点,任意一个点可以直接回到1,每条边有经过代价,求一种最优方案使得每条边至少经过一次,代价最小。题目分析:无源汇有下界最小费用可行流 因为每个边我们必须走一遍,那么每条边下界为1,上界为inf 先把下界都流满了,先把答案加上全部的花费,每条边下界都为1,一定有可行流 然后只需要在满足下界的情况下使得流量平衡 再跑一下最小费用最大流即可...原创 2018-03-16 14:21:07 · 433 阅读 · 0 评论 -
[HAOI2010] 订货
题目描述:大大大雾。题目分析:开始把仓库容量想成了购买+储存的容量上限,还傻敷敷的拆点(哇,什么脑回路… 建模很好搞,就不分析了题目链接:Luogu 2517 BZOJ 2424Ac 代码:#include <cstdio>#include <iostream>#include <cstring>#inclu...原创 2018-04-09 18:49:26 · 176 阅读 · 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 · 142 阅读 · 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 · 297 阅读 · 0 评论 -
[NOI 2010] 美食节
题目描述:QAQ..题目分析:思路见 SCOI2007 修车 不同点1:每道菜有P[i]个,我们只需要把每个菜的点到T的边容量改成P[i]就好了 不同点2:极限数据下,我们图中的边的数量超过了6e6,导致我们SPFA只能得60分… 观察可得,这道题里,按照我们的模型,最多出现800条增广路,而且每次增广都是一的流量 也就是说我们实际上跑800次spfa即可,那么我们就得想个...原创 2018-05-09 15:20:03 · 155 阅读 · 0 评论 -
[SDOI2013] 费用流
题目描述:给出一个流量网络,给出参数费用 T题目分析:Bob/肯定会吧全部的T放在最大流量边上,所以我们必须让最大流量边最小 先跑最大流,然后二分最大流量边,看新的网络是否最大流等于原来网络的最大流题目链接:BZOJ 3130 Luogu 3305Ac 代码:#include <cstdio>#include <iostream&...原创 2018-03-29 09:08:44 · 259 阅读 · 0 评论 -
[SDOI2014] LIS
题目描述:qwq题目分析:求最小字典序最小割 如何判断一条边是否是割边是很容易的 只需要从u出发看是否能找到一条u到v的增广路,如果存在这样的一条路径 说明该边不是割边 那么我们按照C的大小来枚举每一条边 如果该边是割边 那么我们就要把它从图中删除(这样可以让一些割边不再是满流的边 这些删除的割边都是一定不与当前割边在同一割集中的割边 要让这样的边不能入选) 那么我们要怎样最...原创 2018-04-11 14:12:44 · 200 阅读 · 0 评论 -
[AHOI 2009] 最小割
题目描述:给出一个网络 起点S以及汇点T 求 1:第i条边是否可能是最小割集的元素 2:第i条边是否一定是最小割集的元素题目分析:WTF,我不想学图论了,放我走吧 嘤嘤嘤 这个问题叫做最小割唯一性问题 首先我们先在给出的网络上跑一遍网络流 1.不满流的边一定不行… 2.满足1的情况下,如果两个端点在一个强连通分量里,也是不行的. 边的两点还能相互到达 说明它们在割...原创 2018-04-03 16:23:23 · 245 阅读 · 0 评论 -
[SDOI2010] 星际竞速
题目描述:求跑完N个点的最小时间题目分析:神似最短路径覆盖 看到每个点经过一次,那就是cap的限制 花费即费用流 考虑如何建模. 先拆点 S-i的出点容量为1,花费为爆发费用 i的出点-T容量为1,花费为0 S向i的入点连容量为1,花费为0的边 u->v的出点连容量为1,花费为高速航行的费用 考虑由于求最大流,所以所有点的出点向汇点的连边都会流满。每个点的出...原创 2018-04-10 09:43:01 · 252 阅读 · 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 · 169 阅读 · 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 · 216 阅读 · 0 评论 -
[SDOI2015] 星际战争
题目描述:有N个防御机器人,每个机器人有一个防御值K 有M个炮塔,每个炮塔单位时间内可以造成X的伤害 这M个炮塔可以攻击一些机器人,也有一些不能攻击。 求把这些机器人全部打败的时间最少是多少?题目分析:看数据范围和题目要求,很明显就是网络流的模型了. 首先二分一个答案 t 那么每个炮塔最多可以造成 t*X 的伤害 由 S -> 炮塔 连容量为 t*X 的 边 对于...原创 2018-03-10 08:20:11 · 210 阅读 · 0 评论 -
Van♂音游
题目链接题目分析:对于肉肉手,我们就直接从源点向其连一条容量为5的边 对于每个肉肉手可以覆盖到的块,向其连一条容量为1的边 然后对于每个块,向终点连一条容量为1的边 对于虚幻手,我们可以加入图中,也可以直接进行特判。 对于只有肉肉手跑出的答案,我们直接在其基础上加上虚幻手的数量 与块的总数取小就是答案了。Ac Code:#include #include原创 2018-01-23 21:00:38 · 509 阅读 · 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 · 233 阅读 · 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 评论 -
[ZJOI2010] 网络扩容
第一问很好解决,直接跑最大流即可。 第二问很明显是个费用流问题。 一个很明显的想法就是我们可以在原网络的基础上使最大流提升K跑出的最小费用即为答案。 建模方法: 首先保留原网络的残留网络,设费用为0 然后复制原网络,但是容量为inf,费用即扩容费用。 然后搞一个起点,向1连一条容量为K,费用为0的边。 然后在这个新图上跑最小费用最大流即可。 分析: 我们把原网络复制一遍,然后虚拟原创 2018-01-14 15:42:00 · 373 阅读 · 0 评论 -
[CQOI2009]DANCE跳舞
首先,将问题换个问法。 即Ans支舞曲是否可以跳完。 如果Ans支舞曲可以跳完,那么匹配数==Ans*n 我们只需要不停地枚举Ans,直到跳不完为止,那么Ans-1即为答案。 建模分析: 首先 我们把一个人分为喜欢和不喜欢两个点。 从源点向男生喜欢连一条容量为Ans的边,模拟跳Ans支舞曲。 对于女生也是如此。 不喜欢上限为K的限制,我们只需要从不喜欢向喜欢边连一条容量为K的边即可原创 2018-01-14 14:28:36 · 240 阅读 · 0 评论 -
[USACO07OPEN]吃饭Dining
洛谷翻译也是醉。 找了个翻译版本(好像是BZOJ,不过好像是权限题目)Description农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. 农夫JOHN做了F (1 Input第一行: 三个数: N, F, 和 D第2..N+1行: 每一行由两原创 2018-01-14 10:56:00 · 207 阅读 · 0 评论 -
[ZJOI2009]假期的宿舍
类型:网络最大流 建图方式: 若此人为学生,则从他的床向汇点连一条容量为1的边 若此人为学生且没有走 则从源点向他连一条容量为1的边 从他向他的床连一条容量为1的边 若此人不是学生 则从源点向他连一条容量为1的边 若两人认识,则从此人向对方的床上连一条容量为1的边 最后判断跑出的匹配数是否等于总的在校人数即可。COGS BZOJ 洛谷#include #include原创 2018-01-14 08:55:37 · 288 阅读 · 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 · 258 阅读 · 0 评论 -
[NOI2008]志愿者招募
类型:费用流 建模:从第i天向i+1天连一条容量为 inf-need,费用为0的边。 源点S连1,n+1连汇点T 志愿者 从 l向r+1连一条容量为inf,费用为p的边 分析:若我们从今天连向明天的边容量为inf-need的话 为了使网络达到最大流,志愿者边会补上空缺。 这样就模拟了志愿者招募的过程。 CODE#include #include #include #i原创 2018-01-11 21:36:34 · 942 阅读 · 0 评论 -
[Luogu P1402] 酒店之王
Luogu 类型:网络最大流 建模分析: 首先,我们要拆人,却不能拆房间和菜,因为给我们的关系是人与房间和人与菜的关系,我们只能用人当做中间桥梁联系房间与菜。 那么思路就很清晰明了了。 源点向每个房间连一条容量为1的边 喜欢的房间向人的入点连一条容量为1的边 人的入点向出点连一条容量为1的边 人的出点向喜欢的菜连一条容量为1的边 菜向汇点连一条容量为1的边 跑网络最大流即可原创 2018-01-16 20:25:33 · 187 阅读 · 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 · 242 阅读 · 0 评论 -
Reactor Cooling(无源汇点含有上下界的最大流)
题目链接 题目的简单描述: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。本题属于无源汇点含有上下界的最大流模型。 原来的最大流模原创 2018-01-10 16:31:35 · 395 阅读 · 0 评论 -
P2944 [USACO09MAR]地震损失2Earthquake Damage 2
Luogu 类型:最小割 这题目有毒啊。。。 输入P,C,N P才是牧场的总数,弄成N,debug半天。 建模分析: 很明显是道最小割的题目,然而割掉的并不是边,而是点。 所以我们拆点。 先把双向的通道容量设为INF,以防道路被割。 我们直接把1出点设为起点。 对于确定没有损毁的农场,我们先从出点向T连一条INF边。 对于确定没摧毁的农场,拆点中间的边为INF 不确定的为1原创 2018-01-17 21:05:34 · 183 阅读 · 0 评论 -
网络流与线性规划二十四题
前言网络流大法好 只刷了14道题目,剩下的真的做不动啦。1.飞行员匹配问题传送门 本题为二分图匹配问题,可以用网络流解决,也可以用匈牙利算法解决。 这题是一道SPJ,方案不唯一,样例好长时间不过,我以为我错了。。。#include #include #include #include #define il inlineusing namespace std;原创 2018-01-07 16:59:12 · 360 阅读 · 0 评论 -
P3440 [POI2006]SZK-Schools
裸的费用流 QWQ#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*2],net[maxm*2],cost[maxm*原创 2018-01-17 20:07:05 · 193 阅读 · 0 评论 -
[Luogu 3410]拍照
题目类型:最大权值闭合子图题目分析:注意可以不带人。实现代码:#include #include #include #include #define il inlineusing namespace std;const int inf=0x7fffffff;const int maxm=210000;int head[maxm],to[maxm*2],原创 2018-02-01 11:11:26 · 148 阅读 · 0 评论 -
[NOI 2009]植物大战僵尸
类型:最大权值闭合子图建模分析:每个植物有正价值和负价值 这就像太空飞行计划问题中的实验和器材一样 而每个植物保护和被保护的关系就是器材和实验的关系 那么我们就可以套用最大权值闭合子图的模型 首先 从源点向正价值植物建一条容量为价值的边 从每个负价值植物向汇点建一条容量为价值绝对值的边 然后从被保护的植物向保护的植物连一条容量为inf的边 需要注意的是,我们从右方进攻也是一原创 2018-01-25 10:14:22 · 280 阅读 · 0 评论 -
P2762 太空飞行计划问题
本来是想做 NOI2009的植物大战僵尸来着,建了半天模型都没又成功。 于是看了看题解,发现这个问题叫做最大权闭合图 我TM好像没学过啊. 于是先看了看概念,做了下入门的题目,然后一做就是一晚上(惨~ 我真不是颓了来着。概念这个题引入了最大权闭合图的概念。一个闭合图的定义为图中所有点的出边的终点都在这个图中。一个图的最大权闭合子图为其中所有闭合子图中权值和最大的。 本题的实质...原创 2018-01-24 21:32:01 · 321 阅读 · 0 评论 -
网络流之最小路径覆盖问题
问题:给你若干个点和边,问最少用几条路可以覆盖掉全图。 问题转化:网络流 题目传送门 分析: 我们首先将原图用n条路径覆盖,每条边只经过每个节点。 现在尽量合并更多的路径(即将两个路径通过一条边首尾相连)。 可以知道,每合并两条路径,图中的路径覆盖数就会减少1。 所以我们只需要利用网络流合并相关的路径即可。答案求解: 首先将每个节点拆成(Xi,Yi)两个节点,建立源点和汇点,分原创 2018-01-08 09:56:26 · 369 阅读 · 0 评论 -
bzoj 1066蜥蜴
作为在bzoj上的第一题,感觉很伤233 第一道不是板子的最大流 这个建边要用到点 石柱的高度其实就是能经过蜥蜴的个数 将石柱拆分成两个点一个入点,一个出点,其容量就是石柱的高度了 如果两个石柱两两可以到达,那么在A的出点向B的入点建一条边,其容量为INF,来模拟蜥蜴跳过去的过程 虚拟两个点,一个为源点s,一个为汇点t,如果石柱上有蜥蜴的话,从s到石柱的入点连一条边,容量为1,表原创 2017-04-23 11:43:58 · 260 阅读 · 0 评论