![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 94
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
上下界网络流及费用流学习笔记
前言不错的文章:https://www.cnblogs.com/liu-runda/p/6262832.htmlhttps://www.cnblogs.com/leason-lyx/p/11144527.html无源汇上下界可行流:模型:一个网络,求出一个流,使得每条边的流量必须≥L\ge L≥L且≤R\le R≤R,每个点必须满足总流入量 = 总流出量 (流量守恒) (这个流的特点是...原创 2019-12-05 17:28:31 · 472 阅读 · 0 评论 -
图论好题集锦 (19/10/21)
前言:主要练了一些最短路,网络流,数据结构优化建图,感性理解了二分图 HallHallHall 定理HDU 5503有 N(N≤50000)N(N≤50000)N(N≤50000) 支球队,每两支球队之间都会有一场比赛,没场比赛胜利记1分否则记0分,给出这N支球队的分数,问能否构造出每场比赛的结果,使得最后的分数成立?解:首先可以球队向原点连 aia_iai 的边,比赛向两个球队连边,跑...原创 2019-10-21 21:00:45 · 374 阅读 · 0 评论 -
暑假好题汇总
目录[JSOI2007]文本生成器 [AC自动机 + DP]BZOJ3687简单题[Bitset]恨 7 不成妻[数位 DP][SHOI2011]双倍回文[Manacher][NOI2007]货币兑换[CDQ+斜率优化DP]BZOJ2655 calc[ 生成函数 + DP + 拉格朗日差值 ]P3401 洛谷树[树链剖分][BZOJ4205][WOJ3...原创 2019-07-07 22:01:43 · 226 阅读 · 0 评论 -
CF739E Gosha is hunting [费用流 或 凸优化DP]
传送门DP 做法首先暴力 n ^ 3的DP应该没有问题, 但是空间和时间都压不下来, 于是有了凸优化表示第 i 位, 用了j个宝贝球, k个超级球现在变成表示第 i 位, 用了j个宝贝球, 随便用多少个超级球的最优方案如果我们选出来的超级球大于b个, 那么我们将每个超级球的值减小 k , 这样选出来的可能会少一些我们二分这个k, 直到选出来的超级球恰好为 b同理,...原创 2019-07-09 23:36:36 · 215 阅读 · 0 评论 -
CF884F Anti-Palindromize [费用流]
传送门S 向每个字符连字符出现次数流量的边, 这样就保证了字符出现次数与原串相同考虑对称位置不能相同, 我们建 n / 2 个节点, 每个字符向这 n / 2 个节点连边如果 s[i] 和 s[n-i+1] 都是当前字符, 那么只能满足一个, 费用连 max(v[i], v[n-i+1])如果有一个为当前字符, 那么直接连费用为它的边如果两个都不是, 那就是去用来调节的, 连一...原创 2019-07-10 08:13:17 · 169 阅读 · 0 评论 -
CF1045A Last chance [网络流+线段树优化建图]
传送门最大流比较明显了,比较麻烦的是[l,r] 需要用线段树优化建图然后考虑只选2个的限制,我们可以原点向它连流量为 2 的边,这样它的流量就是 0/1/2如果是1怎么办呢,我们发现可以直接它多选一个而另一个武器少选一个,对答案没有影响然后输出方案的时候要特别注意这个限制!#include<bits/stdc++.h>#define N 200050#defi...原创 2019-07-19 16:39:17 · 345 阅读 · 0 评论 -
[NOI2019]序列 [贪心,模拟费用流]
传送门首先你需要知道网络流的建图方法,偷一张图我开始没有想到怎么限制 L 个相同,我们何不先选出 k 对,然后把 k 对拆开调整两边的最大选择新建两个点 C,D 来给两边调整的空间我们可以模拟这个网络流的运作过程类似某些贪心的题,用堆来维护最大之类的我们可以记录 CD 可以通过的流量 flow,如果 CD 有流量,我们就可以在两边分别选最大如果没有,我们可以选一个A...原创 2019-07-20 08:48:34 · 334 阅读 · 0 评论 -
近期刷题总结 [19 03 17]
目录P3703 [SDOI2017]树点涂色[LCT + 线段树]CF739B Alyona and a tree[主席树]P4098 [HEOI2013]ALO[双向链表 + 可持久化0/1trie]P5022 旅行[基环树]P1453 城市环路[基环树DP]CF837G Functions On The Segments[主席树]CF837D Round...原创 2019-03-17 15:16:14 · 325 阅读 · 0 评论 -
[CTSC1999]家园 [网络流]
传送门题解原网 #include<bits/stdc++.h>#define N 300#define M 1000050#define inf 0x3fffffffusing namespace std;int first[M],next[M],to[M],w[M],tot=1;int st,ed=1000000,dis[M]; int n,m,k,ans;...原创 2019-01-13 18:14:21 · 160 阅读 · 1 评论 -
P4016 负载平衡问题 [网络流]
传送门原点向多出的点减边 , 费用为0 , 流量为多出个数少个数的点向汇点建边 , 费用为0 , 流量为少的个数相邻两个建边 , 费用为1 , 流量为inf , 然后跑最小费用最大流#include<bits/stdc++.h>#define N 105#define M 10050#define inf 0x3fffffffusing namespace s...原创 2019-01-13 16:16:35 · 208 阅读 · 0 评论 -
飞行员配对方案[网络流]
传送门直接网络流模板注意输出方案,我们发现,但我们简单方向边不为0时,边的两头就是选了的 代码#include<bits/stdc++.h>#define N 105#define M N*N*4 #define inf 0x3fffffffusing namespace std;int first[N],next[M],to[M],w[M],tot=1;...原创 2018-11-04 20:57:16 · 144 阅读 · 0 评论 -
餐巾计划[网络流]
传送门分析 满足每天要求看做最大流,求最小花费原网 #include<bits/stdc++.h>#define N 4005#define M N*N*4#define inf 0x3fffffff#define LL long longusing namespace std;int first[N],next[M],to[M],w[M],c[M...原创 2018-11-05 23:13:45 · 129 阅读 · 0 评论 -
魔术球[网络流]
传送门将和为平方数的两个数连边 , 从小到大枚举数 , 每次插入一个数就新加边加了过后跑一遍网络流 , 如果发现流为0 , 那么这个数只能新作为一个开头否则 , 我们就可以将它排在后面 , 然后个数 -= 最大流[想一想]我们发现个数大于n时 , 枚举到的now-1就是答案#include<bits/stdc++.h>#define N 5005#define...原创 2018-11-21 21:49:19 · 188 阅读 · 0 评论 -
方格取数加强版[网络流]
传送门luogu的第一篇题解 #include<bits/stdc++.h>#define N 5000#define M N*4#define inf 0x3fffffffusing namespace std;int Map[N],n,k,st,ed,dis[N],vis[N],from[M],froms[M];int first[M],next[M],t...原创 2018-11-29 21:08:47 · 252 阅读 · 0 评论 -
志愿者招募[网络流]
传送门一般地 , 我们将 满足要求 转换为 满足最大流这样求最小价值就是最小费用最大流对于本题 , 源点连第一天 , 汇点连最后一天 , 容量为INF费用为0这样跑网络流是沿时间流的(就是依次解决每一天的问题)然后每一天向后一天连一条容量为INF-a[i] , 费用为0的边为什么容量为INF-a[i]? 这就相当于少了a[i]得用带权边补全INF然后将每一类志...原创 2018-11-29 23:05:21 · 916 阅读 · 0 评论 -
修车[网络流]
传送门将一个技术人员拆成n个点 , 表示第i次修这两车 (如果之前修过了某辆车,这个点到汇点的流量边为0 , 于是只能从后面的流)原点与每个人连一条流量为1,花费为0的边 (保证修n个人的车)每个人的车想拆出来(m*n个)技术人员连一条流量为1,花费为时间的边 拆出来的(m*n)个点向汇点连流量为1,花费为0的边 (修完车就有贡献)#include<bits/stdc+...原创 2018-11-30 23:58:23 · 186 阅读 · 0 评论 -
试题库问题[网络流]
传送门源点向每个试题连边 , 每个试题向类型连边 , 类型向汇点连边 , 流量为个数这样如果最大流是需要的总和,就是有解的 , 将方向边不为0的点输出就可以了#include<bits/stdc++.h>#define N 5050#define M 100050#define inf 0x3fffffffusing namespace std;int firs...原创 2018-12-08 21:25:29 · 148 阅读 · 0 评论 -
方格取数[网络流]
传送门最大流=最小割所以我们每个点向相邻的建边 , 用总的减去最大流就好#include<bits/stdc++.h>#define N 150#define M 100050#define inf 0x3fffffffusing namespace std;int first[N*N],next[M],to[M],w[M],tot=1;int n,m,val...原创 2018-12-09 13:38:52 · 148 阅读 · 0 评论 -
分配问题[最小费用最大流]
传送门建超级出点和汇点(st : 0, ed : n*2+1)第i个人对于第i个点, 第j个任务对应第j+n个点,其中c(i,j) = c ijc(i,j) 可以看做边的权值 , 另外 新添w[i,j] 表示通过这条边的最大流量这里的w全部为1 , 这样保证了每个人对于一个任务然后跑最小费用最大流 , 就是第一个答案再重新建一次变,只不过c全部变为负,再跑一遍就好了附...原创 2018-11-04 20:21:18 · 824 阅读 · 1 评论