CF1077F1 Pictures with Kittens 题解

CF1077F1

很板的 dp。

令 $dp_{i, j}$ 表示前 $i$ 个数中,选了第 $i$ 个数且一共选了 $j$ 个数的方案数,$sum_i$ 表示 $\sum\limits_{j = 1}^{i} a_j$。

显然 $dp_{i, j} = \max\limits_{l=\max(0, i - k)}^{i - 1} dp_{l, j - 1} + a_j$。

暴力递推的话,时间复杂度 $\mathcal{O}(n^2 k)$,可过,代码就不放了。

观察转移方程,发现只需维护 $dp_{k, j - 1}, k\in [\max(0, i - m), i - 1]$ 的最大值,可以使用单调队列维护,省去了一维。

时间复杂度:$\mathcal{O}(n^2)$

注意要先将 $\texttt{dp}$ 数组赋值为 $\texttt{-inf}$,否则可能会报错。

评测记录

posted @ 2023-01-14 12:00  Pengzt  阅读(1)  评论(0编辑  收藏  举报  来源