快乐的一天从AC开始 | 20210704 | P2045

题目链接

看到数据范围之后就猜是网络流之类的做法,仔细研究了下确实直接费用流就可以做。

首先,这题要求得是最大代价,相当于把代价取相反数的最小代价,之后再取一次相反数。

然后,搞超级源点和超级汇点,分别和(a_{11})(a_{nn})连边,容量为(k),代价为0,表示可以走(k)次。

再来是拆点,对于每一个格子,将其拆分成入点和出点两个点,再这两个点之间加两条边:

  • 一条边容量为1,代价为(-a_{ij}),表示第一次经过这个格子的收益。
  • 一条边容量为INF,代价为0,表示后续可以无限经过,但是没有收益。

最后,每个格子向右和向下连边,容量为INF,代价为0,表示可以无限次转移,但是没有收益。

原文地址:https://www.cnblogs.com/zengzk/p/14968349.html