![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树上启发式合并
文章平均质量分 61
1
kaka0010
退役ACMer/算法竞赛菜鸡
展开
-
2019ICPC0南昌 K Tree 树上启发式和并+动态开点线段树
原题链接:https://nanti.jisuanke.com/t/42586目录题意分析Code题意有一棵树,每个点都有权值vi,求满足以下三个条件的点对个数这两个点不能互为祖先节点这两个点之间的最短距离不能超过k这两个点的最近公共祖先节点的权值*2等于这两个点权值之和分析看到树上统计点对的个数,不难想到树上启发式合并和点分治,接着又两个约束条件,一个是树上路径,还有一个是权值约束,树上路径根据套路可以转化为深度,如果已知dep[u]和路径长度k求dep[v],那么dep[v]=2∗原创 2021-04-02 09:59:23 · 1109 阅读 · 0 评论 -
牛客练习赛60 E旗鼓相当的对手 树上启发式合并
原题链接:https://ac.nowcoder.com/acm/contest/4853/E目录题意分析Code题意给定一棵树,每个节点上都有权值,每个节点的答案为以当前节点为公共祖先节点且距离为k的点对的点权和之和分析如果没有固定根节点,可以用点分治来写,现在已经固定好1为根,所以可以考虑dsu on tree我们转化一下题意,找到距离为k的点可以转换为dep[x]−dep[lca]+dep[y]−dep[lca]=kdep[x]-dep[lca]+dep[y]-dep[lca]=kde原创 2021-03-15 18:12:24 · 99 阅读 · 0 评论 -
2020 CCPC Wannafly Winter Camp 阔力梯的树 (树上启发式合并+set)
原题链接分析:题中维护的是子树信息,自然会想到树启。考虑到最朴素的做法,把每颗子树内的节点都取出来,然后sort一下,求个答案,时间复杂度在n * log(n) * n *log(n),因此肯定会超时,所以思考优化的方案。每次加入一个节点,对答案的影响其实是可以O(1)处理出来的,然后加上找到这个点所花的log(n)的复杂度,其实最终的复杂度也只有n * log(n) * log(n),是符合要求的。这里我用set来维护子树有序,然后用自带的二分去找位置, 注意一下边界的细节。#include原创 2020-11-19 17:03:40 · 197 阅读 · 0 评论