iefnah06

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

URL

https://loj.ac/problem/2996

题意

给出一个长度为 \(N\) 的序列,有三个参数 \((H_i, P_i, C_i)\)

  • 你删掉第 \(i\) 个数的花费为 \(C_i\)

  • 对于某个 \(i\),如果 \(i\) 前面没有被删掉的 \(H_j\) 都不超过 \(H_i\),或者 \(i\) 后面没有被删掉的 \(H_j\) 都不超过 \(H_i\),那么获得 \(P_i\)

求最大收入。

解法

考虑最后获得收入的位置,这些位置一定构成了一个先上升后下降的序列

枚举拐点,算一下拐点左边从左到右递增的最大收入,拐点右边从右到左的最大收入即可,这个 DP 可以用线段树优化

实现

https://ideone.com/VZPcsr

posted on 2020-05-26 20:41  iefnah06  阅读(182)  评论(0)    收藏  举报