朴素:
$$
f_{j}\gets\max\{f_j,f_{j-v},f_{j-2v},f_{j-3v},\cdots,f_{j-sv}\}(假设\,j\ge sv)
$$
1 | 0 1 2 3 ... v - 1 |
1 | q v+q 2v+q 3v+q ... pv+q |
dp[j+kv] 在队列中的实际应为 dp[j+kv]-kw
现在已知是第 $i$ 个物品,同余类为 $j$,体积为 $k=j+xv$
$x=\dfrac{k-j}{v}$
$dp(k)-\dfrac{k-j}{v}w$
假设单调队列中最大值为 $a=j+yv$,最后的 $b=j+zv$
判断出队:
$k-a=(x-y)v$
要求 $x-y>s$
那么 $k-a>sv$
$dp(j+yv)-yw+\dfrac{k-j}{v}w$
$a=j+yv$
$y=\dfrac{a-j}{v}$
$dp(a)+\dfrac{k-a}{v}w$