ABC415 VP总结

比赛链接

Result

image

前五题都是唐题,ABC 什么时候越出越简单了

Solution

E - Hungry Takahashi

直接二分答案,check 时用一个 \(f_{i,j}\) 记录走完 \((i,j)\) 后剩余的最大金币,直接递推下去即可

code

F - Max Combo

每个线段树节点存六个值:答案,左边的连续段长度,右边的连续段长度,左边的连续段字符,右边的连续段字符,长度。pushup 时注意判断左右儿子中字符全部相等的情况。然后就是一个线段树板子

code

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)\)

code

posted @ 2025-11-25 23:11  BluemoonQwQ  阅读(1)  评论(0)    收藏  举报