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

    题目链接:

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

    题解:

    单点更新,成段查询。

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define lson o<<1
     6 #define rson (o<<1)|1
     7 #define M l+(r-l)/2
     8 using namespace std;
     9 
    10 const int maxn = 2e5 + 10;
    11 
    12 int n, m;
    13 int maxv[maxn<<2];
    14 
    15 void build(int o, int l, int r) {
    16     if (l == r) {
    17         scanf("%d", maxv + o);
    18     }
    19     else {
    20         build(lson, l, M);
    21         build(rson, M + 1, r);
    22         maxv[o] = max(maxv[lson], maxv[rson]);
    23     }
    24 }
    25 
    26 int _po, _v;
    27 void update(int o, int l, int r) {
    28     if (l == r) {
    29         maxv[o] = _v;
    30     }
    31     else {
    32         if (_po <= M) update(lson, l, M);
    33         else update(rson, M + 1, r);
    34         maxv[o] = max(maxv[lson], maxv[rson]);
    35     }
    36 }
    37 
    38 int ql,qr;
    39 int _max;
    40 void query(int o, int l, int r) {
    41     if (ql <= l&&r <= qr) {
    42         //printf("(%d,%d):%d
    ", l, r,maxv[o]);
    43         _max = max(_max, maxv[o]);
    44     }
    45     else {
    46         //printf("(%d,%d):%d
    ", l, r, maxv[o]);
    47         if (ql <= M) query(lson, l, M);
    48         if (qr > M) query(rson, M + 1, r);
    49     }
    50 }
    51 
    52 int main() {
    53     while (scanf("%d%d", &n, &m) == 2) {
    54         build(1, 1, n);
    55         char cmd[11];
    56         while (m--) {
    57             scanf("%s", cmd);
    58             if (cmd[0] == 'Q') {
    59                 _max = -1;
    60                 scanf("%d%d", &ql,&qr);
    61                 query(1, 1, n);
    62                 printf("%d
    ", _max);
    63             }
    64             else if (cmd[0] == 'U') {
    65                 scanf("%d%d", &_po, &_v);
    66                 update(1, 1, n);
    67             }
    68         }
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    codevs 3971 航班
    2015山东信息学夏令营 Day4T3 生产
    2015山东信息学夏令营 Day5T3 路径
    Tyvj 1221 微子危机——战略
    清北学堂模拟赛 求和
    NOIP2012同余方程
    NOIP2009 Hankson的趣味题
    bzoj1441 MIN
    国家集训队论文分类
    贪心 + DFS
  • 原文地址:https://www.cnblogs.com/fenice/p/5426017.html
Copyright © 2011-2022 走看看