CF1476F

攒了一万年的一个题

考虑 dp,将可行性转化为最优性。

得到方程 \(dp_i\) 表示前 i 个灯笼可以覆盖的连续最大长度是多少。

转移为:

首先考虑这个灯笼的方向朝右

若 dp[i-1] >= i 则 dp[i] = \max(dp[i-1],i+p[i])

若 dp[i-1] < i 则 dp[i] = dp[i-1]

再考虑朝左

若存在一个最小的 j 满足 dp[j]+1 <= i-p[i]

那么 \(dp[i] = \max(i-1,\max(dp[j],\max \sum_{u=j+1}^{i-1}i+p[i]))\)

你看懂了就会觉得十分显然。

过程中维护一下从哪个灯笼转移来的,有点细节

link

posted @ 2021-11-12 21:33  ·Iris  阅读(71)  评论(0编辑  收藏  举报