题目传送门
讲解视频
一、题目大意
给一棵树,原来每个叶子节点上都有苹果,然后有\(2\)种操作,一是问以\(x\)为根节点的子树有多少苹果,二是更改某点的苹果数量。
二、解题思路
做法就是用\(dfs\)序把树形结构转化成线性结构也就是区间,然后用线段树维护。
先要求出每个点的\(in\)和\(out\)值,然后就给每个点分配了一个新编号了,就是它的\(in[i]\),然后\(dfs\)序有个特点就是以\(x\)为根节点的子树里的节点的\(dfs\)序是连续的,所以\(in[x]\)$out[x]$就对应着这颗子树中所有的点,查询的话对$in[x]$\(out[x]\)区间操作。
三、实现代码
#include
#include
#include
#include
#include