P9197 [JOI Open 2016] 摩天大楼 / Skyscraper
一个很好诠释连续段 DP 到底能解决什么样问题的一个题。
首先绝对值肯定要办掉,其中一种方式是从小到大加入数。
考虑形成了若干个连续段,那么转移分为以下三种:
- 新开连续段
- 增加某个连续段长度
- 合并两个连续段
那么,我们现在唯一需要考虑的就是答案如何统计,其实我们可以将差拆开,提前将需要的贡献算出来(就是在之前将系数贡献加到 DP 数组状态里),注意到到了边界就会停止这个过程,所以这个做法绝对是对的。
一个很好诠释连续段 DP 到底能解决什么样问题的一个题。
首先绝对值肯定要办掉,其中一种方式是从小到大加入数。
考虑形成了若干个连续段,那么转移分为以下三种:
那么,我们现在唯一需要考虑的就是答案如何统计,其实我们可以将差拆开,提前将需要的贡献算出来(就是在之前将系数贡献加到 DP 数组状态里),注意到到了边界就会停止这个过程,所以这个做法绝对是对的。