CF1192B Dynamic Diameter 题解

2024/07/14 Blog

前一段时间看的题解写的欧拉序做法,感觉非常的智慧啊,所以这篇题解口糊一个 ddp 做法。

解法

首先没有修改操作的部分很简单,考虑树形 dp,设 $f_{i,0}$ 表示 $i$ 向下到叶子的最远距离,$f_{i,1}$ 表示 $i$ 子树内任意两点能达到的最远距离。

设 $w_i$ 表示 $i$ 和其父亲之间的边权,有转移方程:

\[f_{i,0} = w_i + \max \limits _{j \in son\{i\}} f_{j,0} \\ f_{i,1} = \max (\max \limits _{j \in son\{i\}} f_{j,1},\max \limits _{j,k \in son\{i\},j \neq k} f_{j,0} + f_{k,0})\]

考虑加上修改操作,这里发现上述转移方程只有 $(\max,+)$ 两种运算,且两者均有交换律、结合律,且 $+$ 对 $\max$ 有分配律,所以可以定义广义矩阵乘法 $(\max,+)$,设 $i$ 的重儿子为 $hvson_i$,轻儿子的点集为 $lson{i}$,有矩乘转移:

\[\begin{bmatrix} f_{i,0} \\ f_{i,1} \\ 0 \end{bmatrix} = \begin{bmatrix} w_i & -\infty & w_i + \max \limits _{j \in lson\{i\}} \\ \max \limits _{j \in lson\{i\}} & 0 & \max (\max \limits _{j \in lson\{i\}} f_{j,1},\max \limits _{j,k \in lson\{i\},j \neq k} f_{j,0} + f_{k,0}) \\ -\infty & -\infty & 0 \end{bmatrix} \begin{bmatrix} f_{hvson_i,0} \\ f_{hvson_i,1} \\ 0 \end{bmatrix}\]

因为转移时需要有一些常数上的运算帮助转移,所以加了一维加法单位元。

考虑每个节点使用优先队列动态维护所有轻儿子的 $f_{i,0}$ 和 $f_{i,1}$ 中的最大值和次大值。

总时间复杂度 $\mathcal{O}(q \log ^2 n)$。

因为是口糊的,所以没有代码。

对我博客最大的鼓励来自于你的评论(什么玩梗),欢迎选择 来回复, 也可以在 GitHub discussion 留言。

Search

    公告

    博主这下真摆烂了。我下辈子也不碰 Jekyll 和 MathJax 了!
    留言板,现在博主的精神状态非常好,有事烧纸。

    联系方式

    QQ: 33299235
    email: 33299235@qq.com
    Gmail: scp020.cn@gmail.com

    本人的其它个人主页

    洛谷
    CSDN

    友链

    拜谢stevehim(已退役,祝好)
    拜谢日记
    拜谢cppomstar

    views counting

    Document

    Table of Contents