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;
    }
    
    
    
    


  • 相关阅读:
    装饰器
    内置函数
    文件操作
    函数
    数据结构[总结笔记]
    汉诺塔解题思路
    springboot事物
    mysql5.7.29 zip包安装教程
    mysql常用语句【转载】
    springboot+mysql+jpa+sharding-jdbc+druid读写分离
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3020105.html
Copyright © 2011-2022 走看看