zoukankan      html  css  js  c++  java
  • HDU 1754 I Hate It 线段树

      题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

      题目描述:中文, 自己去看

      解题思路:线段树还是单点更新, 不过由之前的加和变成了最大值稍微的改动一下

      代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #define lson l, m, rt << 1
    #define rson m+1, r, rt << 1 | 1
    #define INF 0x3fffffff
    using namespace std;
    
    const int MAXN = 200020;
    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 value, int l, int r, int rt) {
        if(l == r) {
            MAX[rt] = value;
            return;
        }
        int m = (l+r)>>1;
        if(p <= m) update(p, value, lson);
        else update(p, value, rson);
        PushUp(rt);
    }
    
    int query(int L, int R, int l, int r, int rt) {
        
        if(L <= l && r <= R) {
            return MAX[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() {
        
        int n, m;
        while( scanf("%d%d", &n, &m) == 2 ) {
            build( 1, n, 1 );
            while( m-- ) {
                char op[2];
                int a, b;
                scanf( "%s%d%d", op, &a, &b );
                if( op[0] == 'U' ) {
                    update(a, b, 1, n, 1);
                }
                else {
                    printf( "%d\n", query(a, b, 1, n, 1) );
                }
            }
        }
        
    
        return 0;
    }
    View Code

      思考:还是线段树, 这是最基本的改动了, 要理解一个板子, 就要连最底层都了解, 我是这么认为的。

  • 相关阅读:
    计算机视觉
    深度学习2
    pytorch
    Django笔记
    深度学习
    numpy&pandas
    信息安全与密码技术
    Win10 alt+f4默认关机修改
    (转)Spring Boot 解决跨域问题的 3 种方案
    用 alibaba 的 fastjson 将 list 或 map 转为 json 字符串
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/6900748.html
Copyright © 2011-2022 走看看