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]))\)
你看懂了就会觉得十分显然。
过程中维护一下从哪个灯笼转移来的,有点细节