随笔分类 -  网络流

摘要:题意:树上每个节点上有若干苹果,边上带权,问你最小费用使得书上的苹果方差最小。思路:上下费用流问题,参考http://blog.csdn.net/qq564690377/article/details/8870587代码如下: 1 /********************************... 阅读全文
posted @ 2014-05-13 12:24 张小豪 阅读(430) 评论(0) 推荐(0)
摘要:题意:有若干城市组成一张有向图权值是花费,要你设计一个公交线路图是每个城市都经过一遍,然后要求总的花费最少。线路数量不限制只要覆盖到所有城市有且仅有一次就可以,输出最小费用。思路:liurujia分在二分图里面的题目,第一眼看上去就像是费用流的题,想了一个多小时二分图做法没成功,还是用费用流a了。仔细观察我们可以发现设计出来的线路图必满足最大匹配数等于城市数(二分图两边都为城市)然后在这基础上费用最小。接下来就是建图套模版了。补充:其实直接KM就能解决此题。。果断对算法理解还不到位。代码如下: 1 /**********************************************. 阅读全文
posted @ 2014-02-26 01:11 张小豪 阅读(356) 评论(0) 推荐(0)
摘要:题意:在一个无向网络中,告诉你边的容量与费用。现在需要传送d个数据问你你否能传送成功,若成功则最小费用是多少。思路:显然是最小费用最大流问题,这道题的见图比较简单。只需要添加一个原点费用为D指向1就行了。接下来的事情就是套模版了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define LEN 5010 11 #define ll long long 12 13 using names... 阅读全文
posted @ 2013-12-26 00:10 张小豪 阅读(287) 评论(0) 推荐(0)
摘要:题意:在一个街道网格中有若干个银行,现在有小偷去偷,在偷完钱后由于不能被警察抓到所有任意两个小偷不能走同一条街道(点和边都不行)逃跑,问你是否能把所有的银行都偷到。思路:这道题就是最大流,先建图后套模版就行了。借这道题用了邝大神的sap模版果断效率很高,对于这道题由于点的容量有限制所以需要拆点,然而一开始我没有读清楚题意所以没有拆点导致怎么也算不对。。。后来一想不对劲改过来立马ac了。首先每个点拆成两个结点(一个专门连出边,一个入边)从出边点连一条边指向入边点流量为1。然后在网格之间建立双向变。最后我们设立一个源点,从原点出发到所有银行流量为1表示有小偷去偷,然后再设立一个汇点使所有边上的结点 阅读全文
posted @ 2013-12-25 22:42 张小豪 阅读(275) 评论(0) 推荐(0)
摘要:题意:就是有m个人去n银行告诉你每个人去每个银行的速度让你求每个银行都去人平均时间最少的方案。人比银行多。思路:加一个源点指向所有人(费用0流量1)加一个汇点所有银行指向他(费用0流量1)。这样就转化成最小费用最大流问题。用模版搞定即可。这题一开始自己死活过不了,看了解题报告发现结果要加eps不然就是过不了0.0我的程序eps从1e-3--1e-9都可以。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #incl... 阅读全文
posted @ 2013-12-16 21:29 张小豪 阅读(275) 评论(0) 推荐(0)
摘要:题意:有若干个电器设备需要不同的适配器才能接上电源,现在你要让尽可能多的电气设备接上电源。首先你手中有n个适配器和适配器的型号,再告诉你有m个电器和他们分别对应的适配器的型号,最后还有一个商店提供买不同型号的适配器转换器,转换是单向的A B表示能把A接口转换成B接口(就是原来需要用A适配器的现在可以用B适配器当然也可以用原来的不变)超市提供的转换器数量是没有限制的,可以无限买。思路:这道题很容易就转化为最大流问题首先一个源点连接不同的电器流量为1,不同的电器根据需要连上不同的适配器流量也为1,再根据不同适配器中能转换建立流量为INF的单向边,再根据每个每个适配器拥有的数量从没个适配器连接一条流 阅读全文
posted @ 2013-12-16 15:38 张小豪 阅读(428) 评论(0) 推荐(0)
摘要:题意:(XXL, XL, L, M , S, or XS)每个尺码有若干件,需要分发给m个志愿者。告诉你每个志愿者有两个合适的尺码。问你是否每个志愿者都能找到合适的衣服?思路:其实是二分匹配问题,这两天在学网络流就转化了一下,首先在二分图的学生节点前各加一个指向他流量为1的边再用一个源点指向连接这条边的点,在衣服节点后加一个被指向流量为衣服件数的边。再在这些边后面增加一个汇点。这样图建好了,套一下模版就OK。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #i... 阅读全文
posted @ 2013-12-16 08:43 张小豪 阅读(199) 评论(0) 推荐(0)
摘要:题意:一张网络中有若干个源点及汇点。点上又最大能承载的流量超过了则会自动丢弃,让你求最大流。思路:稍微转化一下套一下模版就ok了。ps:刚刚入门网络流0.0只会模版。这里就讲一下图的转化吧。首先由于在每一点上都有限制所以我们必须把一个点拆成两个点,在两个点当中加一条边,来实现对于点上流量的控制。另外由于是有多个源点+多个汇点。所以我们要认为的加上一个源点使得此点到所有源点都有一条流量为无穷大的边,再人为加一个汇点,使得所有汇点到这一点都有一条流量为无穷大的边。这样一来图就建好了,剩下来的就是套模版了。 1 #include 2 #include 3 #include 4 #include... 阅读全文
posted @ 2013-12-12 00:48 张小豪 阅读(274) 评论(0) 推荐(0)