![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流24题
文章平均质量分 78
CRAZYABOUTYOU
好好学习,天天向上!
展开
-
太空飞行计划问题(最大权闭合图)
本题要求找出原创 2014-11-22 14:47:14 · 876 阅读 · 0 评论 -
运输问题
本题也是费用流为题。建模如下:建立源点ST和汇点ED,由ST向每个仓库连价值为0,流量为ai的边,由每个零售商店向ED连价值为0,流量为bj的边,最后ai和bj间连价值为cij,流量为无穷大的边。最后最优方案就是最小费用最大流,最差方案就是最大费用最大流。代码如下:#include #include #include #include #include #include原创 2014-12-04 11:01:14 · 498 阅读 · 0 评论 -
分配问题
本题n个工作分给n个人,求最优,最差方案,所以是KM算法。当然也可以用费用流建模。建模方法如下:建立源点ST和汇点ED,由ST向n个工作连费用为0,流量为1的边,由每个人向ED连费用为0,流量为1的边,由n个工作向n个人连流量为无穷大,费用为wij的边,最后跑一遍最小费用最大流和最大费用最大流即可。代码如下:#include #include #include #includ原创 2014-12-04 10:50:41 · 573 阅读 · 0 评论 -
数字梯形问题
本题就是从上到下按三种规则取数,使取出的那些数的和最大。其实就可以看成是一个图,选择一些路径,使选择的路径的权值之和最大,即使图的最大权不相交路径,另外两种规则就是它的变种。这种题可以用费用流处理,就是建图之后跑最大费用最大流(最大费用最大流就是在最小费用最小流算法加边时,给负权值,最后求出的就是最大费用最大流)。三种规则就分三种方法建图:#include #include #in原创 2014-12-03 19:49:36 · 523 阅读 · 0 评论 -
负载平衡问题
本题也是费用流问题,首先求出平均值,每个库存再减去平均值,得到的就是每个应该盈亏的值。建立源点ST和汇点ED,如果得到的值为正就由ST向其连费用为0,流量为其值的边,如果为负,则由其向ED连费用为0,流量为其值绝对值的边。最后每个向两边的点连费用为1,流量为无穷大的边(因为是环,所以注意要特殊处理1和n这两个点),最后跑费用流即可。代码如下:#include #include #inc原创 2014-12-04 11:05:15 · 402 阅读 · 0 评论 -
孤岛营救问题(最短路)
本题题目其实与网络流无关,一看题目发现是求从一个地方到另一个地方((1,1)到(n,m))的最快时间,很明显就是求最短路。特别的是本题相邻的两个格子之间可能存在墙和或门,可能是死路也可能需要对应的钥匙开门,所以为啦解决对应的钥匙开门的问题,就可以来状态压缩,在dp[i][j][k]的第三维用二进制,既简单的位运算来表示在i行j列拥有钥匙状态为k时的最快速度。然后再bfs一遍(bfs的过程中可以原创 2014-12-01 18:24:11 · 558 阅读 · 0 评论 -
汽车加油行驶问题(分层图最短路)
本题和第14题一样都是分层图的最短路,但是本题比14题简单一些,因为不存在14题那种对应的钥匙开对应的门的情况,所以本题并不需要状态压缩,只用bfs一遍,在bfs的同时按照题目的要求,分三种情况进行更新最短路就行(注意如果没有油啦就一定要continue,跳过这个,下一个有油继续进队)。最后同样for一遍循环,选出所有答案中的最优解就行。代码如下:#include #include #原创 2014-12-01 19:31:32 · 1136 阅读 · 0 评论 -
最小路径覆盖问题(最小路径覆盖)
本题题目描述可以发现很明显的最小路径覆盖原创 2014-11-22 16:20:01 · 1222 阅读 · 0 评论 -
飞行员配对方案问题(二分图最大匹配)
本题一个英国飞行员可以和特定的一个外国飞行员搭配,又要求求最佳的选人方式使选到的人最多,所以一看就是二分图的最大匹配,可以用匈牙利算法搞定。当然也可以建立网络流模型,首先建立源点S和汇点T,源点向所有英国飞行员连流量为1的边,再把所有英国飞行员和能与之搭配的外国飞行员间连一条流量为1的边,最后把所有外国飞行员向汇点T连一条流量为1的边,此时该模型的最大流等于二分图的最大匹配数。又因为要输出一种方案原创 2014-11-22 14:42:18 · 1132 阅读 · 1 评论 -
最长 k 可重区间集问题
本题其实就是求最大权不相交路径,可以用费用流来建模。方法如下:首先建立源点ST和汇点ED还要建立另一个间接汇点SS。由ST向SS连流量为k,权值为0的边。要把一条线段拆成两个端点来处理。再按照左端点排序。由SS向每个做端点连流量为1,权值为0的边,如果选显然有流量流过。这时再把所有点的右端点向ED连流量为1,权值为0的边。对于线段i,如果其右端点小于其右边点的左端点,说明两者显然不会重合,原创 2014-12-04 16:50:44 · 632 阅读 · 0 评论