![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
文章平均质量分 81
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[费用流建模] Codeforces Gym 101190 NEERC 16 D. Delight for a Cat
很好的建模题 首先变换一下 默认每天都sleep 那么eat的价值就是这一天两个值的差值 每KK天eat的次数必须在[mine,maxe][min_e,max_e]之间 然后我们在变换一下 KK天这个区间[i−K+1,i][i-K+1,i]变成区间末尾ii表示 第ii天eat 能够对[i,min(i+K−1,n)][i,min(i+K-1,n)]天都产生贡献 这样我们就得到了这样一个问题 选原创 2017-03-12 12:56:34 · 1580 阅读 · 0 评论 -
[二分答案 上下界费用流验证] 计蒜客 91 地铁 & HDU 5263 平衡大师
这道题居心不良 标签贪心 怎么写贪心都不对 二分答案 然后用网络流验证 就是杜老师说的这样咯#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){ stat原创 2017-02-07 17:13:22 · 906 阅读 · 0 评论 -
[费用流] POJ 3680 Intervals
简单的费用流建模 一个区间ab 从a到b连边 然后从源到汇一路串起来 源汇容量K#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;inline char nc(){ static char buf[100000原创 2017-01-08 09:34:10 · 517 阅读 · 0 评论 -
[费用流 高精度类 分数类] AOJ 2691 Cost Performance Flow
根据费用流增广的特点 费用和流量肯定是一条凸的分段函数 考虑的答案的几何意义 就是一个点到这条函数的最短距离 直接一段段求就好了 ps 这个题输出小数不就好了 结果输分数 就拉了个分数类 不会__int128 就又拉了个高精度类 总之这道题让我很桑心啊#include<cstdio>#include<cstdlib>#include<algorithm>#include<iost原创 2017-03-03 21:05:05 · 498 阅读 · 0 评论 -
[费用流对偶LP 单纯形] HihoCoder #1464 Challenge 26 Rikka with Flow
直接上dls的solution关于我的单纯形TLE的问题 在这里讨论过了 关于对偶的问题 在这里放出来过#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;const int N=505;const int M=505;const double eps=1e-8原创 2017-02-15 12:28:00 · 1020 阅读 · 0 评论 -
[对偶 KM算法 生成树 || 最大费用可行流 || 线性规划] BZOJ 1937 [Shoi2004]Mst 最小生成树
树边减,非树边加,wi表示i号边原来的边权,di表示i号边的改变量对于一条非树边,覆盖所有树边,都要满足:wi−di≤wj+dj得wi−wj≤di+dj这样的话d就是KM算法里的顶标跑最大匹配即可#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace原创 2016-07-04 18:44:48 · 919 阅读 · 0 评论 -
[LP对偶费用流] BZOJ 3112 [Zjoi2013]防守战线
LP对偶费用流是什么呢 来看杜老师的一张图也就是说最大费用循环流可以对偶成LP 那么这种形式的LP就可以对偶成费用流建完图就是这样然后就可以直接做了 可以发现 这个跟我之前写的题解中的LP对偶成LP 再用差分的思想建费用流 建出来的图是一模一样的 那篇写的太乱了就直接重新开了一篇 这个方法有什么好呢 建图简洁直接 应用性更广原创 2017-02-14 16:11:49 · 1001 阅读 · 0 评论 -
[最小割唯一性 Tarjan] BZOJ 1797 [Ahoi2009]Mincut 最小割
%%%dyh对于一条边(u,v),如果在最小割中,首先要求满流。并且要求u在S集中,v在T集中,也就是在残量网络上u不能到达v。然而v能到达u,也就是判断u,v是否在同一个强连通分量中。如果一定在最小割中,那么有u一定在S集,v一定在T集。也就是u和S在同一个强连通分量,v和T在同一个强连通分量。#include#include#include#include原创 2016-08-05 14:26:03 · 654 阅读 · 0 评论 -
[LP对偶费用流] JAG Practice Contest 2015 J Longest Shortest Path
一个有向图 起点为s 终点为t 每条边有个初始长度de和边权ce。 可以花x*ce的代价将一条边的长度增加x 但是不能减小。 问不超过P的代价最大化s到t的最短路好题 就是不知道能不能直接线性规划艹过去 以下全部抄题解 balabala现列出限制然后对偶发现这个是流量的形式然后进行变量的变换变成由最小费用最大流的性质知 目标函数的一部分g(m)g(m)是下凸的有 ans=g(m)/mans=原创 2017-02-16 12:20:33 · 1157 阅读 · 0 评论 -
[费用流 消圈原理] POJ 2175 Evacuation Plan
这个建图不难想吧 然后就是找到一个负环 增广一通就好了#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; i原创 2017-01-08 09:31:59 · 446 阅读 · 0 评论 -
[最小割] BZOJ 2400 Spoj 839 Optimal Marks
最近比较懒~ 详见这里 考虑每位分开 把01转化为ST集 变成最小割 然后我们还要解决点权尽量小的问题 有两种方法一是从T开始bfs出T集二是设立二维权值 边权是第一优先级 点权是第二优先级 详情百度#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x原创 2017-03-12 11:29:09 · 417 阅读 · 0 评论 -
[费用流] ICPC 2016 China Final J. Mr.Panda and TubeMaster
传送门dls实在是太强啦 可能是我姿势不够高 自己瞎弄弄出个 带下界带正环最大费用循环流 先加超级源汇SS和TT 去下界 转成 带正环最大费用最大流 然后再加超超级源汇S和T 跑一边最大费用最大流 消掉正环 正环没了后 再在SS和TT上跑最大费用最大流 嗯 费用流练习题#include<cstdio>#include<cstdlib>#include<algorithm>using原创 2017-03-29 08:04:11 · 1277 阅读 · 0 评论 -
[LP对偶费用流] SRM 676 div1 Farmville
二分答案T之后转化成求最小费用 加超级源和超级汇 记每个植物生长的时间为xi,结束的时间为yi,减少的时间为di。 那么限制为 yi>=xi+ti-di, yi>=xi,xj>=yi, ys+T>=xt, 最小化sum di*ci然后直接对偶成费用流在目标函数中不存在的,把权值设为inf// BEGIN CUT HERE #include<conio.h>#include<sstream原创 2017-06-29 18:56:27 · 668 阅读 · 0 评论 -
[单纯形 || 差分费用流 || 辅助变量费用流] BZOJ 3112 [Zjoi2013]防守战线
这个题目啊我们用样例说话吧 列出来的式子是这样的对偶一下By the way 这个的解 是 3 1 2 看到这个东西直接无脑simplex啊 管他是不是全幺模然后就过了#include#include#include#define eps 1e-10#define inf 1e20;using namespace std;inl原创 2017-01-07 09:47:08 · 963 阅读 · 0 评论 -
[dsu on tree 主席树优化建图 最大流] BZOJ 3681 Arietta
这显然是个类似二分图匹配 但直接跑网络流边数承受不了 我们采用套路 用数据结构优化建图 类似vfk的a+b problem我们处理子树问题 有一种方法是按dfs序建主席树 然后就可以用减法取出一段区间 也就是子树的信息 但是在某些情况下不能减 比如在这个网络流里 这样的话 我们就要用一种科技 dsu on tree 相关资料 原文 神犇翻译版本大概意思是 我们用重链剖分的思想 当前子树的原创 2017-04-10 22:39:20 · 1048 阅读 · 0 评论 -
[最大密度子图] 2017 计蒜之道 初赛 第三场 腾讯狼人杀
最大密度子图的建图 详见论文 这个东西是支持强制选的#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef double ld;inline char nc(){ static原创 2017-06-05 07:52:43 · 556 阅读 · 0 评论 -
[扫描线 二分图最大匹配 线段树优化网络流] Codeforces 793G Tinkoff Challenge - Elimination Round G. Oleg and chess
这个我们首先可以转化成一个二分图最大匹配的模型 但是肯定跑不出 首先扫描线 把free的格子剖成O(n)O(n)个矩形 对两边都建成线段树 每个矩形对应两边各O(logn)O(\log n)个点 两两相连 总边数O(nlog2n)O(n\log^2n)#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstrin原创 2017-05-28 10:50:50 · 1032 阅读 · 0 评论 -
[差分 上下界最大流] SRM 694 div1 SRMDiv0Easy
考虑差分下 那么区间[l,r][l,r]加就会让ll加 r+1r+1减 那么就两点间连边 因为所有数相等 那么ai,i>1a_i,i>1都等于0 这就是流量平衡 那么S向1点连边 n+1向T点连边 跑下界最大流就好了 答案就是流量// BEGIN CUT HERE #include<conio.h>#include<sstream>// END CUT HERE #include<原创 2017-04-28 20:37:34 · 433 阅读 · 0 评论 -
[最大权闭合子图] BZOJ 4873 [Shoi2017]寿司餐厅
一直以为是DP 结果是网络流 orz WrongAnswer#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p原创 2017-05-02 21:31:59 · 1395 阅读 · 0 评论 -
[最小割] BZOJ 4823 [Cqoi2017]老C的方块
传送门#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>#include<cstring>using namespace std;typedef pair<int,int> abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2017-04-20 06:55:57 · 616 阅读 · 0 评论 -
[最小割] SRM 590 div1 FoxAndCity
有一个n个点的无向无权图,一开始已经连有一些边。 记d(u)表示1号点到u的最短距离,每个点有个标号c(u) 你可以在图中新建一些边,使得sum (d(u)-c(u))^2尽量小。 n<=40比较经典的建模姿势有边相连意味着|d(u)-d(v)|<=1 于是可以每个点拆出一排点。S集表示False T集表示True 注意强制下 d1=0 和 di!=0,i>1// BEGIN CUT HE原创 2017-04-18 21:22:44 · 757 阅读 · 0 评论 -
[费用流手动增广 线段树] BZOJ 3267 KC采花 && 3272 Zgg吃东西 && 3638 Cf172 k-Maximum Subsequence Sum
费用流构图发现这个图比较特殊,可以手动增广就是选择一个最大和子串,然后全部取反线段树实现#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=bu原创 2016-05-02 13:31:05 · 982 阅读 · 0 评论 -
[最小割唯一性 Tarjan 最短路图] BZOJ 3258 秘密任务
被各种坑坑到意识模糊#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2原创 2016-08-05 14:27:40 · 554 阅读 · 0 评论 -
[欧拉回路 构造 || 网络流] Codeforces 723E #375 (Div. 2) E. One-Way Reform
通过欧拉回路构造 称度为偶数的点为偶点 度为奇数为奇点偶点可以满足条件 而奇点不能肯定可以通过只加奇点之间的边使得存在欧拉回路然后求欧拉回路 把加的边删去 对偶点无影响那么就能使所有偶点满足条件网络流?我不是很会网络流的做法#include#include#include#include#define cl(x) memset(x,0,sizeo原创 2016-10-05 21:14:06 · 629 阅读 · 0 评论 -
[最大密度子图 最小割] ACM 2014 Xian C The Problem Needs 3D Arrays
题意:给定一个1-n的排列,它的一个子序列(不一定连续)设为S,令这个子序列的逆序对为R(S),长度为L(S)。请找到一个S,使得R/S最大。题解:裸的最大密度子图#include#include#include#include#include#define V G[p].v#define eps 1e-5#define cl(x) memset(x,0,size原创 2016-07-09 20:40:53 · 748 阅读 · 0 评论 -
[二分图 费用流] BZOJ 4514 [Sdoi2016]数字配对
不会有奇环,那么就建二分图然后跑最大费用流,直到费用小于零为止,处理下零头#include#include#include#include#define cl(x) memset(x,0,sizeof(x))#define oo 1LL<<60#define V G[p].vusing namespace std;typedef long long ll;inl原创 2016-04-23 10:06:35 · 597 阅读 · 0 评论 -
[分治最小割] BZOJ 4519 [Cqoi2016]不同的最小割
最多有N-1种zuixiaoge分治最小割裸题#include#include#include#include#include#define V G[p].v#define cl(x) memset(x,0,sizeof(x))using namespace std;namespace hash_map{ struct node{ int x; int ne原创 2016-04-19 18:32:43 · 547 阅读 · 0 评论 -
[上下界网络流 二分] BZOJ 3698 XWW的难题
有上下界最大流不会打,蒟蒻就打了二分#include#include#include#includeusing namespace std;namespace DINIC{ #define oo 1<<30 #define V G[p].v #define cl(x) memset(x,0,sizeof(x)) #define M 50000+5 #define N原创 2016-03-16 15:14:42 · 440 阅读 · 0 评论 -
[DP 上下界最小流] BZOJ4200 [Noi2015]小园丁与老司机
膜拜大神题解:http://blog.csdn.net/popoqqq/article/details/47402925http://www.cnblogs.com/maijing/p/4689740.html不管怎么说,参观了很多大神的代码,还是把老司机给A掉了第一二问 DP 但是细节很多 码出来的神犇很强 自己代码能力太差然后之后还得来个DP 与第一遍方向相反 就是原创 2016-03-16 21:14:25 · 1854 阅读 · 0 评论 -
[上下界网络流] BZOJ 2502 清理雪道
意淫一个最大流出来 1000ms+然而大神题解最小流跑得飞快 http://blog.csdn.net/popoqqq/article/details/48467349#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p原创 2016-03-16 14:13:39 · 469 阅读 · 0 评论 -
[上下界费用流] BZOJ2324 [ZJOI2011]营救皮卡丘
上下界费用流 第一次自己建图 各种乱搞 跟神犇的建图好像不一样... 自己还是太弱然后就莫名其妙的A了总的来说,就是在没限制的原图上加超级源汇连附加边#include#include#include#include#define V G[p].v#define oo (1<<30)using namespace std;inline char nc(){ stati原创 2016-03-16 13:33:46 · 531 阅读 · 0 评论 -
[上下界费用流] BZOJ 3876 [Ahoi2014]支线剧情
%%%PoPoQQQ http://blog.csdn.net/popoqqq/article/details/43024221以前一直没看懂题意,最近学上下界费用流,挖到这道题...这是第二道上下界费用流 感觉如果保证有解的话 只要在原图上加附加边就行了“分析:每次从剧情点1开始,用最少的时间花费,走完所有的边,每条边至少走一次,所以是下界为1的费用流。 构图:原创 2016-03-16 11:45:28 · 1042 阅读 · 0 评论 -
[上下界费用流] BZOJ2055 80人环游世界
%%% http://blog.csdn.net/popoqqq/article/details/44000835#include#include#include#include#define V G[p].v#define oo 1<<30using namespace std;inline char nc(){ static char buf[100000],*p1=b原创 2016-03-16 11:12:07 · 577 阅读 · 0 评论 -
[最大密度子图 最小割] BZOJ 1312 Neerc2006 Hard Life
就是裸题啦比较好的建模推导:http://www.cnblogs.com/vongang/archive/2012/10/25/2740042.html自己也也要做到能推呢#include#include#include#include#include#define V G[p].v#define eps 1e-5#define cl(x) memset(x,0,原创 2016-06-06 06:47:31 · 976 阅读 · 0 评论 -
[主席树优化建图 最小割] BZOJ 3218 a + b Problem
膜拜PoPoQQQ的题解:http://blog.csdn.net/PoPoQQQ/article/details/42557217#include#include#include#include#define cl(x) memset(x,0,sizeof(x))#define V G[p].vusing namespace std;typedef long long原创 2016-05-29 21:32:22 · 469 阅读 · 0 评论 -
[网络流] 2016 计蒜之道 复赛 菜鸟物流的运输网络
网络流模型 拆点卡流量#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+原创 2016-11-09 10:29:58 · 366 阅读 · 0 评论 -
[平面图 贪心 || 最大流] BZOJ 2939 [Poi2000]滑雪 Skiers
直接做最大流是可以的。不过可以发现,因为所有的路线不相交,故最左的路线尽量往左取显然是最优的。从左至右深搜此图即可得出答案。and the following k integers are their numbers, which are ordered according to the arrangement of glades leading to them, in eas原创 2016-12-18 13:06:45 · 646 阅读 · 0 评论 -
[树形DP 费用流手动增广] Codeforces Gym 101190 NEERC 16 M. Mole Tunnels
因为这个图增广来增广去不会有负环 那么一条增广链必然是树上一条简单路径 那么考虑用树形DP找最短路增广dls是这么说的考虑费用流,每一次要找一条最短的增广路。枚举LCA,然后维护一下每个子树往下走的最短路即可。增广的时候加一下反向边。可以直接树形dp,不需要数据结构维护。#include#include#includeusing namespa原创 2017-01-03 17:31:25 · 814 阅读 · 0 评论 -
[多线程DP 费用流] 51Nod 1084 矩阵取数问题 V2 & POJ 3422 Kaka's Matrix Travels
k取方格数问题 经典可以DP k大了就只能费用流 一个点拆成两个来卡流量多年前的代码丑#include#include#include#include#define oo 2147483647#define cl(x) memset(x,0,sizeof(x))using namespace std;const int N=205;struct edge{原创 2016-11-17 07:44:35 · 411 阅读 · 0 评论 -
[最大费用可行流 || 单纯形] BZOJ 3118 Orz the MST
首先很容易根据树边非树边的大小关系列出线性关系然后对偶一下可以用线性规划也可以跑费用流把对偶后的线性约束写出来 建图就不难看懂了#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2原创 2016-09-20 18:27:06 · 1282 阅读 · 0 评论