码迷,mamicode.com
首页 > 其他好文 > 详细

2019.2.16线段树模板

时间:2019-02-17 00:33:02      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:pac   col   ons   直接   stream   include   style   操作   查询   

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
const int maxen=5000;
int a[maxen+5],st[(maxen<<2)+5]; //a函数为主函数读入的数组,st为需要查询的数的信息,树的空间大小的四倍;
void build(int o,int l,int r){ //o为当前需要建立的节点,l为左端点,r为右端点
if(l==r){
st[o]=a[l]; //当左端点与右端点相同时,即为叶子节点,直接赋值即可;
}
else{
int m=l+((r-l)>>1); //m为中间点,左儿子为[l,m],右儿子为[m+1,r];
build(o<<1,l,m); //构建左儿子节点
build((o<<1)|1,m+1,r);//构建右儿子节点
st[o]=st[o<<1]+st[(o<<1)|1];//递归返回时用儿子结点更新父节点,此处可进行更新最大值、最小值、区间和等操作
}
}
int main(){
build(1,1,n);
}

2019.2.16线段树模板

标签:pac   col   ons   直接   stream   include   style   操作   查询   

原文地址:https://www.cnblogs.com/pipihoudewo/p/10389799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!