联赛阶段比较万能的数据结构。
用结构体和指针来维护。
一个结构体大概长这样
1 | struct NODE |
其中 Update和Push_Down分别是更新当前节点和下传懒标记(这个待会儿会说)。
两个构造函数对函数赋初值,并且为它建立两个指向左儿子与右儿子的节点(一开始指向空)。
然后是维护的区间左右端点,懒标记和维护的值。
建树
自底向上建树。
每次“合并”两个节点。
如果有剩余的一个,直接把他往上提一层。且他肯定不会有儿子节点了。
大概如此。
1 |
|
区间加
先下传再更新。
1 |
|
####区间查
要下传。
1 |
|