zoukankan      html  css  js  c++  java
  • hdu 1754 I Hate It(单点更新,区段查最值)

    题意:

    N个成绩。M个操作。

    Q a b:查询第a个到第b个成绩中最高成绩

    U a b:将第a个成绩改成b

    思路:

    看代码,,

    代码:

    const int maxn = 200010;
    int maxs[maxn<<2];
    
    int N,M;
    
    
    void PushUp(int rt){
        maxs[rt] = max( maxs[rt<<1], maxs[rt<<1|1] );
    }
    
    void build(int l,int r,int rt){
        if(l==r){
            scanf("%d",&maxs[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){
            maxs[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 maxs[rt];
        }
        int m = (l + r) >> 1;
        int ret = 0;
        if(L <= m) ret = max( ret, query(L,R,lson) );
        if(R > m) ret = max( ret, query(L,R,rson) );
        return ret;
    }
    
    
    
    
    
    int main(){
    
        while(scanf("%d%d",&N,&M)!=EOF){
    
            build(1,N,1);
    
            for(int i=1;i<=M;++i){
                char c;
                int a,b;
                getchar();
                scanf("%c%d%d",&c,&a,&b);
                if(c == 'Q') printf("%d
    ",query(a,b,1,N,1));
                else if(c == 'U') update(a,b,1,N,1);
            }
    
        }
    
    }
  • 相关阅读:
    MySQL分库分表环境下全局ID生成方案
    centos添加php及mysql环境变量
    shell中的常用通配符,字符类
    centos7 安装xinetd,telnet
    centos7 systemctl一些用法
    ps命令
    nginx与php-fpm通信的两种方式
    nginx常用功能
    MySQL安装
    MySql与MariaDB由来与历程
  • 原文地址:https://www.cnblogs.com/fish7/p/4248595.html
Copyright © 2011-2022 走看看