http://zhengruioi.com/problem/2617
对于此类dp式子:
d p i , j = ∑ d p k , j − w ( k , i ) dp_{i,j}=\sum dp_{k,j-w(k,i)} dpi,j=∑dpk,j−w(k,i)
暴力计算为 O ( n 3 ) O(n^3) O(n3),但如果 w ( j , i ) w(j,i) w(j,i) 在 w ( j , i − 1 ) w(j,i-1) w(j,i−1) 的基础上变化数量不大(或者变化是个连续区间),就可以拿个数据结构来维护
本质是拿线段树来实现区间平移
实现过程可以拿个标记永久化
在从小到大枚举
i
i
i 时,根节点维护当前dp值
大胆猜测,此类问题也可做,等我长大回来看
d p i , j = ∑ ( d p k , j − w ( k , i ) + v ( k , i ) ) dp_{i,j}=\sum (dp_{k,j-w(k,i)}+v(k,i)) dpi,j=∑(dpk,j−w(k,i)+v(k,i))