iefnah06

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

URL

https://atcoder.jp/contests/arc070/tasks/arc070_c

解法

考虑 DP,计 \(dp_i(x)\) 为考虑了前 \(i\) 个矩形,最后一个矩形的左端点在 \(x\) 的最小代价。通过归纳法可以证明,把 \(dp_i\) 看成关于 \(x\) 的函数的话,函数是一个不超过 \(2i+1\) 段,斜率从左到右依次为 \(-i,-(i-1),\ldots,0,\ldots,i-1,i\) 的 polyline,答案就是 \(dp_n\) 斜率为 \(0\) 那一段的值。

每次要支持集体平移/加一个绝对值函数,可以用两个堆维护。

实现

https://ideone.com/zwqbJv

posted on 2020-04-08 21:55  iefnah06  阅读(352)  评论(0)    收藏  举报