zoukankan      html  css  js  c++  java
  • [置顶] HDU 1754 线段树

    
    
    #include<iostream>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<cctype>
    #include<iomanip>
    
    #define Lson  left , t   , rt<<1
    #define Rson  t+1  ,right,rt<<1|1
    
    using namespace std;
    const int maxn=200005;
    int f[maxn<<2];
    
    void PushUP( int rt ){
        f[rt] = max( f[rt<<1], f[rt<<1|1] );
    }
    
    void build( int left, int right ,int rt ){
        if( left==right ){
            cin>>f[rt];
            return;
        }
        int t=(left + right)>>1;
        build(Lson);
        build(Rson);
        PushUP(rt);
    }
    
    void update(int ii,int value,int left, int right, int rt ){
        if( left == right ){
            f[rt] = value; return;
        }
        int t=(left+right)>>1;
        if(ii<=t) update(ii, value, Lson);
        else      update(ii, value, Rson);
        PushUP(rt);
    }
    
    int query(int l, int r, int left, int right, int rt ){
        if( l<=left && r>=right )
            return f[rt];
        int t=(left+right)/2;
        int ret = 0;
        if(l <= t)ret = max(ret, query( l, r, Lson) );
        if(r > t) ret = max(ret, query( l, r, Rson) );
        return ret;
    }
    
    int main(){
        int n,m;
        while(cin>>n>>m){
            build(1,n,1);
            while(m--){
                char C; int a,b;//for(int i=0;i<=n;++i)cout<<f[i]<<' ';cout<<endl;
                cin>>C>>a>>b;
                if(C=='Q') cout<<query(a,b,1,n,1)<<endl;
                else update(a,b,1,n,1);
            }
        }
        return 0;
    }
    
    
    
    


  • 相关阅读:
    HTML目录
    Java目录
    高级Swing——列表
    Java Web目录
    mongodb目录
    MySQL目录
    基于C++11的线程池
    数据库架构的演变
    cocos2dx-3.0(14)------SpriteBatchNode与SpriteFrameCache加快渲染
    cocos2d-x 托付模式的巧妙运用——附源代码(一)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3020105.html
Copyright © 2011-2022 走看看