d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j] 第
i
i
i 个元素被选择且此时共选择
j
j
j 个元素最佳答案
每
k
k
k 个至少选一个可得
d
p
[
i
]
[
j
]
=
m
a
x
(
d
p
[
o
]
[
j
−
1
]
)
dp[i][j] = max(dp[o][j-1])
dp[i][j]=max(dp[o][j−1]) ,
i
−
k
≤
o
≤
i
−
1
i-k \leq o \leq i-1
i−k≤o≤i−1 ,区间最值,单调队列优化
此情况
Q
[
i
]
Q[i]
Q[i]代表
d
p
[
o
]
[
i
]
dp[o][i]
dp[o][i] 的最值序列,因此第二重循环
j
j
j 需倒序遍历防止影响后续状态转移
比如
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j]转移后(取了第
i
i
i个数字后)被纳入
Q
[
j
]
Q[j]
Q[j],若正序遍历,当遍历至
d
p
[
i
]
[
j
+
1
]
dp[i][j+1]
dp[i][j+1]时,从
Q
[
j
]
Q[j]
Q[j]转移,可能把刚才纳入的取出,又把
a
[
i
]
a[i]
a[i]加上,再放入
Q
[
j
+
1
]
Q[j+1]
Q[j+1],
a
[
i
]
a[i]
a[i]被重复取用影响答案,倒序避免这样。