P7730-JDWOI-1-蜀道难
题意
给出序列 \(a_{1, \ldots ,n}\),可以做无限次以下 \(m\) 次操作。选择一个长度为 \(l_i\) 的区间,花费 \(c_i\) 的代价将其加上 \(o_i\in \{ 1,-1 \}\)。
求最终让其单调不降的最小花费,或报告无解。
\(n,m\le 200,a\le 1000\)
思路
对于单调操作,可以先考虑变成差分数组。这样问题就转化为了将两点一个 \(+1\) 一个 \(-1\),然后使得最终所有结果都 \(\ge 0\)。
然后对于这种资源的转移和这种数据范围可以考虑网络流。对于所有的 \(d_i\ge 0\),则我们可以认为它最多做 \(d_i\) 次减操作,目的是让其它的一些 \(d_j<0\) 最终可以被转移成 \(\ge 0\) 的状态。
所以我们将所有的 \(d_i\ge 0\) 连 \(S\to i\) 的边,流量 \(d_i\) 费用 \(0\)。然后将所有的 \(d_i<0\) 连 \(i\to T\),流量为 \(|d_i|\) 费用为 \(0\)。
然后我们考虑现在中间的操作,我们可以将所有能做的两点之间从减的点向加的点连流量为 \(+\infty\),费用为 \(c_i\) 的边。
然后特别的,\(n+1\) 在差分中也有可能被访问,所以我们可以认为它是一个可以任意做的点,那么连 \(S\to n+1\),流量为 \(+\infty\) 即可。

浙公网安备 33010602011771号