题面 传送门 题目大意:给定初始根节点为1的树,有3种操作 1.把根节点更换为r 2.将包含u,v的节点的最小子树(即lca(u,v)的子树)所有节点的值+x 3.查询v及其子树的值之和 分析 看到批量修改子树,我们想到将树上操作转化为区间操作 通过DFS序我们可以实现这一点. 对于每个节点x,我们记录它在前序遍历中的位置l[x],再一次回到x时的序号r[x],则x及其子树的区间为前序遍历中的[l[x],r[x]] 具体可点击这篇博客 那么,3种操作如何进行: 操作1.用一个变量root记录当前…