![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
费用流
KirinSB
这个作者很懒,什么都没留下…
展开
-
LightOJ 1071 Baker Vai(拆点+最大费用流)题解
题意:给一个n*m的方格,每个格子上都有一个数字表示价值,小A在左上角,他从左上角走到右下角只能向右或向下走,然后再从右下角走上左上角,这次只能向上或向左走,这两条路绝对没有重复,问你怎样走有最大价值。 思路:因为不能重复,就拆点。拆点是这样的,把一个点拆成一条边,每条边流量为1,表示只能走一次,费用为该点价值的相反数,因为要最大费用,初始和末尾两个点内的流量要设为2因为要走两次。我们把每个点和...原创 2018-07-24 18:38:24 · 113 阅读 · 0 评论 -
POJ 3422 Kaka's Matrix Travels(拆点+最大费用流)题解
题意:小A从左上角走到右下角,每个格子都有一个价值,经过这个格子就把价值拿走,每次只能往下或往右走,问你走k次最多能拿多少价值的东西。 思路:这里有一个限制条件就是经过之后要把东西拿走,也就是每一格的价值只能拿一次,这也能用拆点。我们把一个点拆成两个,建两条边,一条流量1费用-cost,另一条流量k-1,费用0,这样就完成了。 代码: #include<cstdio> #inc...原创 2018-07-25 09:56:01 · 143 阅读 · 0 评论 -
UVALive - 2927 "Shortest" pair of paths(最小费用最大流)题解
题意:有n个机器,机器之间有m条连线,我们需要判断机器0到n-1是否存在两条线路,存在输出最小费用。 思路:我们把0连接超级源点,n-1连接超级汇点,两者流量都设为2,其他流量设为1,那么只要最后我们能找到超级汇点和超级源点的流量为2就说明有两条路,输出最小值。 代码: #include<cstdio> #include<vector> #include<st...原创 2018-07-24 09:29:07 · 106 阅读 · 0 评论 -
POJ 2195 Going Home(最小费用最大流)题解
题意:给你一张图,有k个人和k个房子,每个房子只能住一个人,每个人到某一房子的花费为曼哈顿距离,问你让k个人怎么走,使他们都住房子且花费最小。 思路:我们把所有人和超级源点相连,流量为1花费为0,所有房子和超级汇点相连,流量为1花费为0,然后把所有人和所有房子加边,流量为1,花费为曼哈顿距离,这样这道题目就变成了求超级源点到超级汇点的MCMF。 代码: #include<cstdio...原创 2018-07-23 19:30:07 · 143 阅读 · 0 评论