Gravatar
┭┮﹏┭┮
积分:3648
提交:829 / 1810

Pro3922  删除题目

首先我们假设两条边 $(u1,v1)$,$(u2,v2)$ 中间未选择断边,则我们可以考虑 DP,设 $f_i$ 表示 必须选 $(fa_i,i)$ 这条边时在其子树内走可以得到的最大贡献,则任意一点 $v$ 在其子树内,则有转移方程 $f_i = \max\limits_{v \in son(i)} f_v + size_v \times (size_u - size_v)$,这东西可以用 李炒熟 维护,对于树形结构可以用 李超树合并 解决子树问题。


但是这显然没完,上述所求的只是在一条链 从子树到祖先 上的路径,然后我们考虑在某个点合并两条链,假设合并两点 $u,v$,则需要再减去重复的贡献 $size_u \times size_v$,所以我们求得答案即为 $f_u + f_v - size_u \times size_v$ 的最大值,显然也可以用 李焯书,然后考虑如何合并,显然可以用 淀粉质,复杂度是 $\mathcal{O}(n\log^2{n})$ 的,但巨大长代码。


知周所众,dsu on tree 是可以代替一些淀粉质的,所以我们考虑用 dsu on tree,考虑每个点 $x$,保存其 重儿子 的李超树,其余节点暴力查询答案,然后进行 李焯书贺兵 即可,复杂度也是 $\mathcal{O}(n\log^2{n})$,但较好写,常数也小。



2024-09-05 22:00:36    
我有话要说
暂无人分享评论!