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

线段树

时间:2019-08-28 11:20:07      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:class   计算   int   star   amp   oid   uml   color   end   

//单点修改、区间查询
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; }

 

线段树

标签:class   计算   int   star   amp   oid   uml   color   end   

原文地址:https://www.cnblogs.com/wronin/p/11422441.html

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