对于一类dp的思考

Posted by tofucurd on June 27, 2022

题目大概意思

有一个很多一维数轴(从上到下,时间从前到后),每个一维数轴上会有一些区间,主人公要依次葱最上面的数轴穿到最下面的数轴,必须/不可以经过数轴上的区间,水平移动需要代价,问最小的代价是多少。

数据范围一般值域很大。

思考

首先一定有一个$dp_{i,j}$表示到第$i$个数轴,在$j$的最小代价,方程一定可以为:

\[dp_{i,j}=\min_{k} {\{dp_{i-1,k}+|j-k| \times cost\}}\]

其中$cost$是一个常量。

首先可以先把绝对值拆开,分为$k \le j$和$k \geq j$两种分别用线段树维护区间最小值,但是发现无法一次性区间更新值。

于是我们可以发现,在这种情况下,只有区间的端点才有意义,因为先水平后竖直与先竖直后水平是等价的。

有了上述结论后,我们就只需要区间查单点改了。