zoukankan      html  css  js  c++  java
  • 模板

    这里是以区间最大值为例,要修改成其他的运算,注意修改每个函数的运算以及query中返回的无关值。

    这里的区间最大值设置的最小元素为-1(在query中表示与当前区间不相交的区间的结果)。

    注意因为调用的方式传入l与r是(1,n),所以这个线段树(包括a)其实是从1开始计数的。

    最后,小心爆MAXM。

    const int MAXM=200000;
    int a[MAXM+5],st[(MAXM<<2)+5];
    
    inline void pushup(int o){
    	st[o]=max(st[o<<1],st[o<<1|1]);
    }
     
    void build(int o,int l,int r){
        if(l==r) st[o]=a[l];
        else{
            int m=l+((r-l)>>1);
            build(o<<1,l,m);
            build(o<<1|1,m+1,r);
            pushup(o);
        }
    }
     
    void update(int o,int l,int r,int id,int v){
        if(l==r) st[o]=v;
        else{
            int m=l+((r-l)>>1);
            if(id<=m) update(o<<1,l,m,id,v);
            else update(o<<1|1,m+1,r,id,v);
            pushup(o);
        }
    }
     
    int query(int o,int l,int r,int a,int b){
        if(r<a||l>b) return -1;
        if(a<=l&&r<=b) return st[o];
        int m=l+((r-l)>>1);
        int p1=query(o<<1,l,m,a,b),p2=query(o<<1|1,m+1,r,a,b);
        return max(p1,p2);
    }
     
    
  • 相关阅读:
    安全公司
    HTML5 Security Cheatsheet
    渗透1
    dos其他
    Ddos 类别
    python之控制条件if语句
    python编码规范(二)——空行,换行,缩进
    python编码规范(一)——空格的使用
    python入门基础
    网页模板的自定义
  • 原文地址:https://www.cnblogs.com/Yinku/p/10936478.html
Copyright © 2011-2022 走看看