博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线段树模板
阅读量:5338 次
发布时间:2019-06-15

本文共 1779 字,大约阅读时间需要 5 分钟。

#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 55555;int sum[maxn<<2];void PushUP(int rt) {         sum[rt] = sum[rt<<1] + sum[rt<<1|1];}void build(int l,int r,int rt) {         if (l == r) {                 scanf("%d",&sum[rt]);                 return ;         }         int m = (l + r) >> 1;         build(lson);         build(rson);         PushUP(rt);}void update(int p,int add,int l,int r,int rt) {         if (l == r) {                 sum[rt] += add;                 return ;         }         int m = (l + r) >> 1;         if (p <= m) update(p , add , lson);         else update(p , add , rson);         PushUP(rt);}int query(int L,int R,int l,int r,int rt) {         if (L <= l && r <= R) {                 return sum[rt];         }         int m = (l + r) >> 1;         int ret = 0;         if (L <= m) ret += query(L , R , lson);         if (R > m) ret += query(L , R , rson);         return ret;}
线段树单点修改,区间求和
#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxn=200005;int Max[maxn<<2];void PushUP(int rt){    Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);}void build(int l,int r,int rt){    if(l==r)    {        scanf("%d",&Max[rt]);        return ;    }    int m=(l+r)>>1;    build(lson);    build(rson);    PushUP(rt);}void update(int p,int sc,int l,int r,int rt){    if(l==r){        Max[rt]=sc;        return ;    }    int m=(l+r)>>1;    if(p<=m){        update(p,sc,lson);    }    else update(p,sc,rson);     PushUP(rt);}int query(int L,int R,int l,int r,int rt){   if(L<=l&&r<=R)        return Max[rt];    int ret=0;    int m=(l+r)>>1;   if(L<=m) ret=max(ret,query(L,R,lson));   if(R>m)  ret=max(ret,query(L,R,rson));   return ret;}
线段树单点更行,区间更新极值

线段树数组要开到4倍节点的原因:

推荐线段树博客:

转载于:https://www.cnblogs.com/zhgyki/p/9911947.html

你可能感兴趣的文章
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>