随笔分类 -  最小费用最大流

摘要:最小费用最大流2010的国赛题,题意很易懂不解释了。分析部分参考了别人博客:一般的最小费用最大流是给出每个单位流量的费用,计算费用的时候是单位费用*流量,但是这里是单位费用*流量*流量,并不能单纯地计算,要巧妙地拆容量,每条边的原容量为cap,拆成cap条,每条容量都是1,第一次取这条路时是单位费用a,第二次是3*a,依次为5*a,7*a,9*a,这样你会发现,这条路走容量2的话刚好是4a,3为9a,4为16a,5为25a,接下来做一最小费用最大流即可另外注意一点,题中说明边数最大为5000,而每条边的容量最大为5,所以在开数组的时候应该开到 2*5*50000,原来的一条边要拆成cap条边, 阅读全文
posted @ 2013-03-15 18:53 Titanium 阅读(550) 评论(0) 推荐(0)
摘要:最小费用最大流题意:有n个地点,m部船(m>=n),给出每部船到每个地点的时间。然后要派船到地点。每个船只能用一次即只能去只能去一个地方,每个地方只需要一部船。算出最小平均时间。要算平均时间其实就是算总时间最小,然后除以n即可。那怎么求总时间最小呢?其实一看,就是匹配类型的问题,但是就我目前学的匹配的算法,没有可以解这道题的,然后是出于白书的图论专题,就考虑是不是可以转化为其他类型的问题来解呢?想起二分图最大匹配问题可以转化为最大流来解,所以很快就想到了用最小费用最大流来解船从1到m标号,地点从m+1到m+n标号。建立有向图,都是从u船指向v地点,单位费用就是u船到v地点的时间,容量就是 阅读全文
posted @ 2012-12-15 21:52 Titanium 阅读(660) 评论(0) 推荐(0)
摘要:题意:固定起点1和终点n,从1到n,再从n回到1,去和回的路上相同的边只能用一次,求两次的和最短,如果去的时候不能去到终点或者回的时候回不到起点那么就输出Back to jail,否则输出两次和的最小值(此图是无向图,不会有重边,边的权值在大于1小于1000)两种理解一种思路是最小费用最大流另一种是最短路不唯一且两条或者多条最短路由共用边 ,或者最短路与次短路有共用边我先写的是第二种思路,最小费用最大流还没写,明天补上,并且补上思路第二种做法是,把无向图当做有向图处理,拆成两条边,先从1到n做一次最短路,并且要记录这条有向路径。最短路结束后,记录下最短路的值d[t],如果为d[t]=INF(t 阅读全文
posted @ 2012-12-09 23:51 Titanium 阅读(1048) 评论(0) 推荐(0)
摘要:最小费用最大流:无向图(所以必须用邻接表)+当流量为D时的最小费用(即限制流量在D,求最大流)题意:就是给你一个无向图,给出所有的无向边和它们的单位费用(题中说了不会有平行边),然后给出D,K,K是指每条无向边的容量固定为K,然后问当流量为D时最小费用是多少,如果流量无法得到D这个数值,那么就输出Impossible. 解决这个问题的方法就是限制流量,加一个新的源点(或者汇点,道理一样),增加一条有向边,就是新的源点指向原本的源点,这条有向边的容量就是D,费用是0,然后求新源点到汇点的最小费用最大流,可以知道,求出来的最大流一定是小于等于D的(同样是最大水流取决于最细水管的道理,水流必须从新的 阅读全文
posted @ 2012-11-28 23:28 Titanium 阅读(696) 评论(0) 推荐(0)