
费用流
范艺杰
这个作者很懒,什么都没留下…
展开
-
51nod2629 偷箱子
题目题目链接解题思路我们发现只要保证每行每列的最值不变,还有不为0的格子永远不为零即可。这时候会有某个格子能够同时满足行最大值和列最大值,这种情况是极好的。因此我们对行列建立二分图,如果iii行和jjj列最大值相同,且(i,j)(i,j)(i,j)不为空,即可连边。对此图求带权匹配即可。我们可以发现,二分图的带权匹配等价于费用流。代码#include <cstdio>#include <algorithm>#include <cstring>#in原创 2021-03-17 17:29:13 · 165 阅读 · 2 评论 -
51nod2905 奔小康赚大钱
题目题目链接解题思路非常明显的费用流。这里有两点需要注意:1.求得是最大收益,因此要跑最大费用最大流。即spfa时求的是最长路。2.图是完全图,属于稠密图。单纯的spfa会TLE。需要SLF优化,即当松弛后点的距离比队头小则放到队头,否则放到队尾。如此能够通过此题。代码#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include &l原创 2021-03-17 18:12:01 · 178 阅读 · 0 评论 -
51nod2940 交换棋子
题目题目链接解题思路使用费用流算法解决此题。首先如果始末状态黑子数量不等肯定无解。如果两个子的路径有交叉,可以通过调整移动顺序避免实际的碰撞。将棋盘上的每个点拆成三个点,中间点代表到达了当前点,以此来满足交换次数的上限。我们向以源点向起始状态每个黑子的中间点连一条流量1,费用0的边。以终止状态黑子的中间点向汇点连流量1,费用0的边。最后相邻点连容量INF,费用1的边。跑费用流即可。代码#include <cstdio>#include <algorithm>原创 2021-03-18 16:51:08 · 2160 阅读 · 1 评论