zoukankan      html  css  js  c++  java
  • HDU (线段树 单点更新) I Hate It

    和上一道题没什么变化,只不过把单点增减变成了单点替换,把区间求和变成了区间求最大值。

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 const int maxn = (1 << 20);
     6 
     7 int n, m, qL, qR, p, v;
     8 int _max[maxn];
     9 
    10 void build(int o, int L, int R)
    11 {
    12     if(L == R) { scanf("%d", &_max[o]); return; }
    13     int M = (L + R) / 2;
    14     build(o*2, L, M);
    15     build(o*2+1, M+1, R);
    16     _max[o] = max(_max[o*2], _max[o*2+1]);
    17 }
    18 
    19 void update(int o, int L, int R)
    20 {
    21     if(L == R) { _max[o] = v; return; }
    22     int M = (L + R) / 2;
    23     if(p <= M) update(o*2, L, M);
    24     else update(o*2+1, M+1, R);
    25     _max[o] = max(_max[o*2], _max[o*2+1]);
    26 }
    27 
    28 int query(int o, int L, int R)
    29 {
    30     if(qL <= L && qR >= R) return _max[o];
    31     int ans = -1;
    32     int M = (L + R) / 2;
    33     if(qL <= M) ans = max(ans, query(o*2, L, M));
    34     if(qR > M) ans = max(ans, query(o*2+1, M+1, R));
    35     return ans;
    36 }
    37 
    38 char op[10];
    39 
    40 int main()
    41 {
    42     //freopen("in.txt", "r", stdin);
    43 
    44     while(scanf("%d%d", &n, &m) == 2)
    45     {
    46         build(1, 1, n);
    47 
    48         while(m--)
    49         {
    50             scanf("%s", op);
    51             if(op[0] == 'Q')
    52             {
    53                 scanf("%d%d", &qL, &qR);
    54                 printf("%d
    ", query(1, 1, n));
    55             }
    56             else
    57             {
    58                 scanf("%d%d", &p, &v);
    59                 update(1, 1, n);
    60             }
    61         }
    62     }
    63 
    64     return 0;
    65 }
    代码君
  • 相关阅读:
    Java基础技术多线程与并发面试【笔记】
    Java GC【笔记】
    Java JVM【笔记】
    Java基础技术JVM面试【笔记】
    Java HashSet和TreeSet【笔记】
    Java TreeMap 和 LinkedHashMap【笔记】
    Java HashMap【笔记】
    Java LinkedList【笔记】
    Java ArrayList【笔记】
    java基础技术集合面试【笔记】
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4456358.html
Copyright © 2011-2022 走看看