##概念及实现
仙人掌最短路
虚仙人掌
树上有一类问题可以通过建虚树解决,它们的共同特征是部分节点的树上动规问题,询问数通常很多,但是所有询问的点数之和与总点数是同一数量级的。在树上的话就可以每次建一颗虚树快速解决,参考我之前的博客虚树,而我们把仙人掌建成圆方树之后也可以按照相同的方法处理。
不过直接套用之前的方法肯定是不行的,我们需要对环上的情况进行特殊处理,不过这点我们在之前的直接在仙人掌上动态规划的题目中已经讨论过了;真正麻烦的问题是原始的圆方树上一个方点的所有儿子都是此方点所带白哦的环内的点,但是建完圆方树的虚树之后就不是这样了,而我们之前的动态规划方法都是基于环的。其实处理方法也很简单:对于方点 $u$ 的一个不在方点所代表的环上的儿子 $v$ ,找到 $v$ 的一个祖先 $x$ ,使 $x$ 在 $u$ 所代表的环上即可,如图所示:
[UOJ87] mx的仙人掌
给定一棵 $n$ 个点 $m$ 条边的带权仙人掌,有 $q$ 次询问,每次询问一个点集中的点的最短路的最大值,询问点数之和为 $tot$。
$n,q,tot\leq3\times10^5$
与 BZOJ1023 十分相似,按照虚仙人掌的套路直接动态规划就好,本题的难点其实在于重边的处理。
1 |
|