dp 计数.
不难发现,合法的选择区间会在选一个数之后不断收缩,将它作为状态记录下来 dp 即可.
设 $dp(i,l,r,k)$ 表示考虑了前 $i$ 个数,下个数合法的选择区间为 $[l,r]$ , 最后一个数的值为 $k$ 的方案数.
转移时,对于 $[l,l],[l+1,k-1],[k,k],[k+1,r-1],[r,r]$ 这几段分别转移,每一段内转移到新的 $l,r$ 是一样的.
于是修改差分就可以完成 $O(1)$ 转移,注意处理 $l,r$ 不存在等特殊情况,时间复杂度 $O(n\cdot r^3)$ .
1 | //%std |