树的分治[点分治]
aozil_yang
这个作者很懒,什么都没留下…
展开
-
POJ 1741 Tree (男人八题 - 树分治[点分])
题意: 树上n 个点, 求有多少点对满足距离不超过K 思路: 树上点分治 入门题目。 我们每次递归 都要从这棵树的重心开始递归。 从这个点这出其他点到这个点距离来, 然后我们看看有几个点对 距离和满足小于等于K, 这肯定是一部分贡献, 但是有个问题, 这样计算,只有 一个点在一个子树,另一个点在另一个子树才能满足这个距离公式, 如果同在一棵子树, 那么显示式子不成立, 所以,我们需要把这原创 2017-08-09 16:26:37 · 436 阅读 · 0 评论 -
CodeForces - 293E Close Vertices(树上点分治 + 树状数组)
题意: 一棵树上 告诉你边权。 问你有多少点对满足的路上的权值之和 小于等于w, 边数小于等于L。 思路: 显然树上的点分治。 和男人八题一样, 只不过多加了一个边数小于等于L的限制。(一维限制变成二维限制) 做法肯定还是一样。 只不过在求经过重心满足要求点对时有点变化 (其余算法 看上一篇文章)。。 分析一下, 因为边权最大1e9, 边数最大1e5 , 因此, 边数这一个原创 2017-08-09 18:03:04 · 475 阅读 · 0 评论 -
HDU 4812 D Tree (2013-南京 树分治 + 逆元 + 离散化)
题意: 告诉你树上的点权, 问你是否存在一条路径,(u,v) 使得这条路上的点权乘积 % mod = K? 存在的话输出字典序最小的(u,v)不存在输出no solution 思路: 这种链上的题 基本就是树剖和分治。 树剖要枚举所有链把= = 不太好弄。 那就是分治了。 找到重心后, 肯定是要处理那些经过重心的链, 然后合并。 是否有解。 很容易想到的是 dfs每个点 到重心的原创 2017-08-12 11:21:10 · 302 阅读 · 0 评论