ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【学习笔记】slope-trick

【学习笔记】slope-trick

[BalticOI 2004] Sequence (Day1)

\(f_{i,x}\) 表示考虑前 \(i\) 个位置,当前放了 \(x\)。转移式如下:

\[f_{i,x} = |a_i - x| + f_{i - 1,x} \]

考虑建坐标系,有点 $(x,f_{i,x})。然后它就相当于给当前的函数加上个 \(y=|a_i-x|\)

\[f_{i,x} = \min\{f_{i,x},f_{i,x-1}\} \]

注意到,我们每次加的是上凸函数,所以 \(f_i\) 也是上凸函数。因此想要实现上面这个转移,只需把斜率 >0 的地方抹平即可。

于是,上述过程可以用一个堆维护函数拐点。

返回列表