树的经典问题
文章平均质量分 84
荼白777
这个作者很懒,什么都没留下…
展开
-
两种树的直径
树的直径一般有两种说法;注意,每棵树的直径可能不唯一;第一种是树的边权总和最大的路径(有边权的树);另一种是树上经过最多边的路径(无边权的树);第一种题面题目思路权值最大的路径有两种可能;一种是一路走到黑;另一种是取一条路的最大值加另一条路的次大值对于第一种情况,我们直接往下取即可;对于第二种情况,我们相当于要取挂在某个结点上的两条路,也就是要穿过父节点;具体见注释Code#include <iostream>#include <cstdio原创 2021-10-16 15:19:46 · 89 阅读 · 0 评论 -
树上差分思想与例题
前言笔者今天遇到一道题目,用到了树上边差分;记录一下个人学习树上差分的思考;引入我们想想数列的差分;比如想给区间[L,R]+C[L,R]+C[L,R]+C,那么是在差分数组b[L]+C,b[R+1]−C差分数组b[L]+C,b[R+1]-C差分数组b[L]+C,b[R+1]−C;也就是只会影响我们想要操作的区间,不会导致其他的数受影响;树上差分&数列差分我个人感觉,树上的差分可以看成从叶子到当前节点的一条链;如下图所示;树上点差分我们定义cnti表示点i被经过的次数cnt_i原创 2021-09-23 22:31:44 · 141 阅读 · 0 评论