ABC415 VP总结
Result

前五题都是唐题,ABC 什么时候越出越简单了
Solution
E - Hungry Takahashi
直接二分答案,check 时用一个 \(f_{i,j}\) 记录走完 \((i,j)\) 后剩余的最大金币,直接递推下去即可
F - Max Combo
每个线段树节点存六个值:答案,左边的连续段长度,右边的连续段长度,左边的连续段字符,右边的连续段字符,长度。pushup 时注意判断左右儿子中字符全部相等的情况。然后就是一个线段树板子
G - Get Many Cola
好题
令 \(dp_i\) 为 \(n=i\) 时的答案。转移方程为 \(dp_i=\max\limits_{a_j\le i}\{dp_{i-a_j+b_j}+b_j\}\)。这时转移复杂度为 \(O(nm)\)
因为 \(a_i\) 相同时由于贪心策略我们只需要保留最大的 \(b_i\),转移复杂度降到了 \(O(nV)\),但是仍然不能通过
由于 \(V\le 300\),这启发我们使用矩阵快速幂。我们可以暴力求出 \(dp_{1\sim 300}\),令 \(f_i\) 为 \(a_j-b_j=i\) 时最大的 \(b_j\),我们可以得出:
\[\begin{bmatrix}
dp_{i-1} \quad dp_{i - 2} \quad dp_{i-3} \quad \dots \quad dp_{i-300}
\end{bmatrix}\times
\begin{bmatrix}
f_1 \quad 0 \ \quad -\infty\quad \dots \ -\infty \\
f_2 \ \ -\infty \ \ \quad 0\quad \dots \ \ -\infty\\
\vdots \qquad \vdots \ \ \qquad \vdots \qquad \ddots \quad \vdots\\
f_{299} \ \ -\infty \ \ -\infty\quad \dots \quad 0 \\
f_{300} \ \ -\infty \ \ -\infty \quad \dots -\infty
\end{bmatrix}
=\begin{bmatrix}
dp_{i} \quad dp_{i - 1} \quad dp_{i-2} \quad \dots \quad dp_{i-299}
\end{bmatrix}
\]
其中,\(\times\) 是 \((\min,+)\) 乘法,直接使用矩阵快速幂计算即可,时间复杂度为 \(O(V^3\log n)\)

浙公网安备 33010602011771号