线段树是一种数据结构,大概长成这个样子:
而线段树的每个节点都包含了它的范围以及它里面的数字,每个节点最多有2个子节点,而节点还包含一个附加信息(例如最大值,求和),而现在我们要求和。
建树
问:为什么要建树?答:不建树就没法使用这个数据结构。评:废话。
现在我们的节点有三个值,两个表示其包含的范围,一个是我们的和。按照常理来说,我们需要一个结构体,然而作者不想,所以就不用了。
int seg[size],beg[size],end[size];
因为我们的树只有2个子节点,所以使用堆的表示方式(一个节点如果其编号为\(p\)的话它的左子节点为\(2p\),右子节点为\(2p+1\))
标签:2p,线段,节点,数据结构,建树,size From: https://www.cnblogs.com/littlelu/p/16812083.html