Uoj#575 【ULR #1】光伏元件
题意:给出一个
给出代价矩阵
对于每个
要求第
求满足上述要求的代价最小的放置方案。
保证存在合法方案,
且
要求第
考虑使用(上下界)网络流来求解。
把行和列分别用点表示,对于位置
要求一定无元件:不连边。
要求一定有元件:
,流量上下界都为 。 可以改变,且初始时无元件:
连边容量 。 可以改变,且初始时有元件:
连边容量 。 连边容量 ,表示退流。
如何限制行和列的流量相同呢?
可以发现,行的流量是流出的,列的流量是流入的。可以使用循环流的思路来限制,让列
如下图:
求上下界循环可行流即可。
最小费用循环可行流。
对于位置
要求一定无元件:不连边。
要求一定有元件:
,流量上下界都为 ,费用为 。 可以改变,且初始时无元件:
连边容量 ,费用为 。 可以改变,且初始时有元件:
连边容量 ,费用为 。 连边容量 ,费用为 ,表示退流。
图中可能有负环,需要采用一些技巧。
一般情况
把中间的“循环”边改成这样的设计。
不难发现,由于上下边的下界均为
只需证明
假设上方的流量为
那么上点的流量为
显然
反过来,任给出一组合法的点流量
若
由于
若
余下流量为
费用流的实现
点数为
若采用一般的 SSP-SPFA 费用流,复杂度为