随笔分类 -  树上问题

摘要:树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。对于树上两点间距离通常有三种定义,我们根据这三种情况分别讨论一下它的性质 树的直径的求法: 树的直径有两种求法,时间复杂度都是O(n) ①贪心求法: 贪心求直径的方法是任意 阅读全文
posted @ 2020-04-05 23:23 overrate_wsj 阅读(1437) 评论(0) 推荐(1)
摘要:目录: 16.91B.Queue(树状数组/线段树) 17.431C.K-Tree(树形DP+容斥) 18.1084D. The Fair Nut and the Best Path(树形DP) 19.1187C. Vasya And Array(构造) 20.768B. Code For 1(分治 阅读全文
posted @ 2020-03-01 16:23 overrate_wsj 阅读(666) 评论(0) 推荐(0)
摘要:题意: 给一棵树,边权未知,现在给m组约束,每组约束给出从u到v路径中的最小值,现在让你给出一组边权,使得符合之前的约束,不能给出输出-1 思路: 因为n较小,对于每组约束我们可以直接暴力修改路径上的权值,如果边的权值小于当前约束的最小值,则将权值修改,最后再根据每组约束暴力走一遍路径看路径是否满足 阅读全文
posted @ 2020-02-05 23:07 overrate_wsj 阅读(217) 评论(0) 推荐(0)
摘要:题意: 给一棵树,求出每一点到树上其他点的最远距离 思路: ①我们先考虑一个点到其子树中的点的最远距离 定义1.dp[i][0]是以i号节点为跟到其子树的最远距离 2.dp[i][1]是以i号节点为跟到其子树的次远距离(为什么维护这个后面可以知道) 3.son[i]是以i号节点为根的的子树中距离i最 阅读全文
posted @ 2020-01-23 21:41 overrate_wsj 阅读(134) 评论(0) 推荐(0)
摘要:题意: 给一棵树,找到三个顶点,使三个顶点两两之间路径的并集最大 思路: 必定会有一组最优解,使得 a,b是树直径上的端点。 证明: 假设某个答案取连接点x。x最远的树到达的点是s,根据树的直径算法,s是树的某个直径a的端点。假设x的最远和第二远的点组成的链是b,b就会和a有一段公共部分。我们取a和 阅读全文
posted @ 2020-01-23 19:32 overrate_wsj 阅读(498) 评论(1) 推荐(0)