线段树

Posted wronin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线段树相关的知识,希望对你有一定的参考价值。

//单点修改、区间查询
int
t[maxn]=0; void build_tree(int node,int start,int end) if(start==end) t[node]=a[start]; return ; int left=2*node+1; //左节点的坐标 int right=2*node+2; //右节点的坐标 int mid=(start+end)/2; build_tree(left,start,mid); //递归建树 build_tree(right,mid+1,end); t[node]=t[left]+t[right]; void update(int node,int start,int end,int index,int val) if(start==end) a[index]=val; t[node]=val; return ; int left=node*2+1; int right=node*2+2; int mid=(start+end)/2; if(index>=start&&index<=mid) update(left,start,mid,index,val); else update(right,mid+1,end,index,val); t[node]=t[right]+t[left]; int query(int node,int start,int end,int L,int R) //不在计算范围之内 if(R<start||L>end) return 0; //整块在计算范围内 else if(L<=start&&R>=end) return t[node]; //计算到叶节点 else if(start==end) return t[node]; int mid=(start+end)/2; int left=node*2+1; int right=node*2+2; int sumleft=query(left,start,mid,L,R); int sumright=query(right,mid+1,end,L,R); return sumleft+sumright;

 

以上是关于线段树的主要内容,如果未能解决你的问题,请参考以下文章

一般线段树与权值线段树

详解权值线段树

权值线段树&&线段树合并

zkw线段树

权值线段树

#树# #线段树#