做题记录 26.4.16

QOJ #837. Giant Penguin

取出任意生成树,对生成树点分治

对于一个分治中心,显然当前分治连通块内只有至多 \(k\) 条边跨越了它的两个子树(每个环至多对应一条),从而一共至多 \(2k+1\) 个关键点,跨越两个子树的路径必然经过这些点之一

预处理连通块内所有点被标记的顺序和询问的顺序,枚举关键点,求出每个点到关键点的距离,然后双指针跟新答案

容易做到 \(O((n(k+\log n)+q\log q+m)\log n)\)

代码

参考

posted @ 2026-04-17 07:08  Hstry  阅读(5)  评论(0)    收藏  举报