• hdu1754 I Hate It


    http://acm.hdu.edu.cn/showproblem.php?pid=1754

    线段树,单点更新

     1 #include <stdio.h>
     2 
     3 #define lson l, m, root<<1
     4 #define rson m+1, r, root<<1|1
     5 
     6 const int maxn = 200010;
     7 const int minint = 1<<31;
     8 int max1[maxn<<2];
     9 
    10 int max(int x, int y)
    11 {
    12     return x>y? x: y;
    13 }
    14 
    15 void push_up(int root)
    16 {
    17     max1[root] = max(max1[root<<1], max1[root<<1|1]);
    18 }
    19 
    20 void build(int l, int r, int root)
    21 {
    22     int m;
    23     if(l == r)
    24     {
    25         scanf("%d", max1+root);
    26         return;
    27     }
    28     m = (l + r) >> 1;
    29     build(lson);
    30     build(rson);
    31     push_up(root);
    32 }
    33 
    34 void update(int x, int change, int l, int r, int root)
    35 {
    36     int m;
    37     if(l == r)
    38     {
    39         max1[root] = change;
    40         return;
    41     }
    42     m = (l + r) >> 1;
    43     if(x <= m)
    44     {
    45         update(x, change, lson);
    46     }
    47     if(m+1 <= x)
    48     {
    49         update(x, change, rson);
    50     }
    51     push_up(root);
    52 }
    53 
    54 int query(int L, int R, int l, int r, int root)
    55 {
    56     int m, result;
    57     if(L <= l && r <= R)
    58     {
    59         return max1[root];
    60     }
    61     result = minint;
    62     m = (l + r) >> 1;
    63     if(L <= m)
    64     {
    65         result = max(result, query(L, R, lson));
    66     }
    67     if(m+1 <= R)
    68     {
    69         result = max(result, query(L, R, rson));
    70     }
    71     return result;
    72 }
    73 
    74 int main()
    75 {
    76     int n, m, a, b;
    77     char c;
    78     while(~scanf("%d%d", &n, &m))
    79     {
    80         build(1, n, 1);
    81         getchar();
    82         while(m-- && scanf("%c%d%d%*c", &c, &a, &b))
    83         {
    84             if(c == 'Q')
    85             {
    86                 printf("%d\n", query(a, b, 1, n, 1));
    87                 continue;
    88             }
    89             update(a, b, 1, n, 1);
    90         }
    91     }
    92     return 0;
    93 }
  • 相关阅读:
    pageX,clientX,screenX,offsetX的区别
    不同的浏览器内核了解学习
    小游戏模仿
    浏览器兼容性
    hack是什么
    DOM对象
    Browser对象
    html状态码与缓存学习
    javascript对象(2)
    javascript对象(1)
  • 原文地址:https://www.cnblogs.com/yuan1991/p/hdu1754.html
Copyright © 2020-2023  润新知