摘要: 题意:给定一棵n节点的树(n<=10000),求满足dis(i,j)<=k的点数个数。p.s.准备学习树链剖分。。先从qzc的论文开始。。解法:树上分治。 我们可以通过dfs求出每个点到子树根的距离,对于以u为根的子树,满足条件并且路径过u的点对数=满足条件的所有点对数-路径不过u的点对数。 求法就是对所有dis排序然后两个指针扫,时间复杂度O(n).和http://acm.buaa.edu.cn:4567/problems/25一样的做法。 当树退化的时候直接分治复杂度会很高,所以对于每个子树我们要找出重心,然后选重心为根再进行分治。这样的话递归深度会控制在log(n). 1 # 阅读全文
posted @ 2013-02-07 22:22 silver__bullet 阅读(206) 评论(0) 推荐(0) 编辑