距离最远点可以想到找直径,根据"天生的胆小鬼"给我们的经验,可以发现这题找到直径中点就会很好办。找到直径中点后,提为根,此时对于任意非根节点 \(u\),其权值一定小于父节点权值。
每次询问枚举连通块顶点,然后启发式合并(大概叫 dsu on tree 吧)求子树内权值满足要求的点数。当然也可以考虑用双指针,然后用并查集维护。
2023-10-30 08:15:46
距离最远点可以想到找直径,根据"天生的胆小鬼"给我们的经验,可以发现这题找到直径中点就会很好办。找到直径中点后,提为根,此时对于任意非根节点 \(u\),其权值一定小于父节点权值。
每次询问枚举连通块顶点,然后启发式合并(大概叫 dsu on tree 吧)求子树内权值满足要求的点数。当然也可以考虑用双指针,然后用并查集维护。