网络流

传说中的网络流24题

牧云@^-^@ 提交于 2019-12-27 03:28:38
网络流24题,传说中学习的网络流的必做题目。今天终于做完了,感觉涉及的模型并不多,有一些我听说过的就没有涉及。但还是总结如下: 1 搭配飞行员 二分图最大匹配 最大流   建模:把正副驾驶员分别作为二分图,以在可以同机飞行的政府飞行员间建边,流量为1。建立源点s和正飞行员间的边,流量1。建立副飞行员和汇点t的有向边,流量1。dinic,最大流。 2 太空飞行计划 最大权闭合图 最小割   建模:建立源点s和汇点t,让s与所有试验相连接,边权为试验赞助的钱数;让所有仪器与t相连接,边权为仪器费用;让所有试验与对应的仪器链接,边权为inf,跑最大流就可以了。明显要么是赞助费大于仪器费,那么得到的是仪器费(赞助费-仪器费=收益);要么是仪器费大于赞助费,那么得到的是赞助费(不值得做,还是赞助费-赞助费=收益=0)。这样所有的赞助费减去得到的结果就是收益。   最大权闭合子图:http://blog.csdn.net/q610376681/article/details/52268346 3 最小路径覆盖 有向无环图最小路径覆盖 最大流   最小不相交路径覆盖:把每个点进行拆点,把2点之间连不边,;原有边依旧建边,注意入点和出点,权为1;建立源点和汇点,并分别连接他们与入点和出点的边,权为1。然后就是二分图匹配了。所有点数(不含源点和汇点)减去最大匹配就是答案。   通过上面的建图

「网络流24题」 题目列表

狂风中的少年 提交于 2019-12-27 03:26:52
「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分图最小路径覆盖 <3> 4 魔术球问题 二分图最小路径覆盖 <4> 5 圆桌问题 二分图多重匹配 <5> 6 最长递增子序列问题 <6> 7 试题库问题 <7> 8 机器人路径规划问题 <8> 9 方格取数问题 二分图最大点权独立集 <9> 10 餐巾计划问题 <10> 11 航空路线问题 <11> 12 软件补丁问题 最小转移代价 <12> 13 星际转移问题 <13> 14 孤岛营救问题 <14> 15 汽车加油行驶问题 <15> 16 数字梯形问题 最大权不相交路径 <16> 17 运输问题 网络费用流 <17> 18 分配问题 二分图最佳完美匹配 <18> 19 负载平衡问题 <19> 20 深海机器人问题 <20> 21 最长k可重区间集问题 <21> 22 最长k可重线段集问题 <22> 23 火星探险问题 <23> 24 骑士共存问题 <24> 来源: https://www.cnblogs.com/Capella/p/8192729.html

【线性规划和网络流24题】

六月ゝ 毕业季﹏ 提交于 2019-12-27 03:26:08
(1)飞行员配对方案问题:二分图最大匹配。 思路:略。 View Code 1 #include<cstdio> 2 #include<cstring> 3 #define MAXN 1010 4 int cx[MAXN], cy[MAXN]; 5 int first[MAXN], next[MAXN], v[MAXN], e; 6 bool vis[MAXN]; 7 inline void addEdge(int x, int y) { 8 v[e] = y; 9 next[e] = first[x]; 10 first[x] = e++; 11 } 12 int path(int x) { 13 int i; 14 int y; 15 for (i = first[x]; i != -1; i = next[i]) { 16 y = v[i]; 17 if (!vis[y]) { 18 vis[y] = true; 19 if (cy[y] == -1 || path(cy[y])) { 20 cx[x] = y; 21 cy[y] = x; 22 return 1; 23 } 24 } 25 } 26 return 0; 27 } 28 int main() { 29 int n, m; 30 int i; 31 int x, y; 32 int ans; 33 while

线性规划与网络流24题索引

依然范特西╮ 提交于 2019-12-27 03:25:16
编号 问题名称 问题模型 转化模型 1 飞行员配对方案问题 二分图最大匹配 网络最大流 2 太空飞行计划问题 最大权闭合图 网络最小割 3 最小路径覆盖问题 有向无环图最小路径覆盖 网络最大流 4 魔术球问题 有向无环图最小路径覆盖 网络最大流 5 圆桌问题 二分图多重匹配 网络最大流 6 最长递增子序列问题 最多不相交路径 网络最大流 7 试题库问题 二分图多重匹配 网络最大流 8 机器人路径规划问题 (未解决) 最小费用最大流 9 方格取数问题 二分图点权最大独立集 网络最小割 10 餐巾计划问题 线性规划网络优化 最小费用最大流 11 航空路线问题 最长不相交路径 最小费用最大流 12 软件补丁问题 最小转移代价 最短路径 13 星际转移问题 网络判定 网络最大流 14 孤岛营救问题 分层图最短路径 最短路径 15 汽车加油行驶问题 分层图最短路径 最短路径 16 数字梯形问题 最大权不相交路径 最小费用最大流 17 运输问题 网络费用流量 最小费用最大流 18 分配问题 二分图最佳匹配 最小费用最大流 19 负载平衡问题 最小代价供求 最小费用最大流 20 深海机器人问题 线性规划网络优化 最小费用最大流 21 最长k可重区间集问题 最大权不相交路径 最小费用最大流 22 最长k可重线段集问题 最大权不相交路径 最小费用最大流 23 火星探险问题 线性规划网络优化

网络流24题解题报告小结

爷,独闯天下 提交于 2019-12-27 03:24:27
1 飞行员配对方案问题 二分图最大匹配 网络最大流 #include<iostream> #include<vector> #include<algorithm> #include<cstdio> #include<queue> #include<stack> #include<string> #include<map> #include<set> #include<cmath> #include<cassert> #include<cstring> #include<iomanip> using namespace std; #ifdef _WIN32 #define i64 __int64 #define out64 "%I64d\n" #define in64 "%I64d" #else #define i64 long long #define out64 "%lld\n" #define in64 "%lld" #endif /************ for topcoder by zz1215 *******************/ #define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++) #define FFF(i,a) for( int i = 0 ; i < (a) ; i ++) #define FFD(i

网络流24题

随声附和 提交于 2019-12-27 03:23:33
问题编号 问题名称 问题模型 转化模型 1 飞行员配对方案问题 二分图最大匹配 网络最大流 2 太空飞行计划问题 最大权闭合图 网络最小割 3 最小路径覆盖问题 有向无环图最小路径覆盖 网络最大流 4 魔术球问题 有向无环图最小路径覆盖 网络最大流 5 圆桌问题 二分图多重匹配 网络最大流 6 最长递增子序列问题 最多不相交路径 网络最大流 7 试题库问题 二分图多重匹配 网络最大流 8 机器人路径规划问题 (未解决) 最小费用最大流 9 方格取数问题 二分图点权最大独立集 网络最小割 10 餐巾计划问题 线性规划网络优化 最小费用最大流 11 航空路线问题 最长不相交路径 最小费用最大流 12 软件补丁问题 最小转移代价 最短路径 13 星际转移问题 网络判定 网络最大流 14 孤岛营救问题 分层图最短路径 最短路径 15 汽车加油行驶问题 分层图最短路径 最短路径 16 数字梯形问题 最大权不相交路径 最小费用最大流 17 运输问题 网络费用流量 最小费用最大流 18 分配问题 二分图最佳匹配 最小费用最大流 19 负载平衡问题 最小代价供求 最小费用最大流 20 深海机器人问题 线性规划网络优化 最小费用最大流 21 最长k可重区间集问题 最大权不相交路径 最小费用最大流 22 最长k可重线段集问题 最大权不相交路径 最小费用最大流 23 火星探险问题 线性规划网络优化

网络流24题-题目总结

痴心易碎 提交于 2019-12-27 03:22:48
问题编号 问题名称 问题模型 转化模型 1 飞行员配对方案问题 二分图最大匹配 网络最大流 2 太空飞行计划问题 最大权闭合图 网络最小割(最大流) 3 最小路径覆盖问题 有向无环图最小路径覆盖 网络最大流 4 魔术球问题 有向无环图最小路径覆盖 网络最大流 5 圆桌问题 二分图多重匹配 网络最大流 6 最长递增子序列问题 最多不相交路径 网络最大流 7 试题库问题 二分图多重匹配 网络最大流 8 机器人路径规划问题 最小费用最大流 9 方格取数问题 二分图点权最大独立集 网络最小割 10 餐巾计划问题 线性规划网络优化 最小费用最大流 11 航空路线问题 最长不相交路径 最大费用最大流 12 软件补丁问题 最小转移代价 状压dp + SPFA 13 星际转移问题/[CTSC1999]家园 网络判定 网络最大流 14 孤岛营救问题 分层图最短路径 状压 + BFS 15 汽车加油行驶问题 分层图最短路径 SPFA + dp 16 数字梯形问题 最大权不相交路径 最大费用最大流 17 运输问题 网络费用流量 最小(大)费用最大流 18 分配问题 二分图最佳匹配 最小费用最大流 19 负载平衡问题 最小代价供求 最小费用最大流 20 深海机器人问题 线性规划网络优化 最大费用最大流 21 最长K可重区域集问题 最大权不相交路径 最大费用最大流 22 最长K可重线段集问题

P4015 运输问题 网络流问题

旧巷老猫 提交于 2019-12-27 03:20:06
题目描述 W W 公司有 m m 个仓库和 n n 个零售商店。第 i i 个仓库有 a_i a i ​ 个单位的货物;第 j j 个零售商店需要 b_j b j ​ 个单位的货物。 货物供需平衡,即 \sum\limits_{i=1}^{m}a_i=\sum\limits_{j=1}^{n}b_j i = 1 ∑ m ​ a i ​ = j = 1 ∑ n ​ b j ​ 。 从第 i i 个仓库运送每单位货物到第 j j 个零售商店的费用为 c_{ij} c i j ​ ​​ 。 试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少。 输入输出格式 输入格式: 第 1 1 行有 2 2 个正整数 m m 和 n n,分别表示仓库数和零售商店数。 接下来的一行中有 m m 个正整数 a_i a i ​ ,表示第 i i 个仓库有 a_i a i ​ 个单位的货物。 再接下来的一行中有 n n 个正整数 b_j b j ​ ,表示第 j j 个零售商店需要 b_j b j ​ 个单位的货物。 接下来的 m m 行,每行有 n n 个整数,表示从第 i i 个仓库运送每单位货物到第 j j 个零售商店的费用 c_{ij} c i j ​ 。 输出格式: 两行分别输出最小运输费用和最大运输费用。 输入输出样例 输入样例#1: 复制 2 3 220 280 170 120

网络流24题之深海机器人问题

纵然是瞬间 提交于 2019-12-27 03:16:52
源点向起点连边,终点向汇点连边。 点点之间连边,一条是流量无限不花钱的,一条是流量为1花钱的 最大费用最大流即可。 By:大奕哥 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=25005,inf=1e9; 4 int d[N],head[N],cnt=-1,a,b,P,Q,num,p[105][105],cost,f[N],s,t; 5 bool v[N]; 6 struct node{ 7 int w,to,nex,c,f; 8 }e[1000005]; 9 void add(int x,int y,int w,int c) 10 { 11 e[++cnt].to=y;e[cnt].nex=head[x];head[x]=cnt;e[cnt].f=x;e[cnt].w=w;e[cnt].c=c; 12 e[++cnt].to=x;e[cnt].nex=head[y];head[y]=cnt;e[cnt].f=y;e[cnt].w=0;e[cnt].c=-c; 13 } 14 queue<int>q; 15 bool spfa() 16 { 17 memset(d,0x3f,sizeof(d)); 18 memset(v,0,sizeof(v)); 19 memset(f,-1,sizeof(f));

[网络流24题] 数字梯形问题

别来无恙 提交于 2019-12-27 03:15:51
题面: 传送门 思路: 三合一题目 但是实际上做好了第一个就没有别的问题了 第一问: 把每个数字拆成两个点,中间连一条容量为1,费用为0的边,以此达到限制每个点流量的目的 然后其余的不多说,源点到第一层,每一层向下连,最后一层到汇点 第二问: 第一问中每个点内部的那条边容量改成inf就好 第三问: 直接dp算了......当然你也可以再改改边,跑网络流,不过估计没有dp快 Code: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define inf 1000000000 6 using namespace std; 7 inline int read(){ 8 int re=0,flag=1;char ch=getchar(); 9 while(ch>'9'||ch<'0'){ 10 if(ch=='-') flag=-1; 11 ch=getchar(); 12 } 13 while(ch>='0'&&ch<='9') re=(re<<1)+(re<<3)+ch-'0',ch=getchar(); 14 return re; 15 } 16 int n,m,cnt,ans,flow,tot,first[10010],x[25][25],id[25][25]