码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 1754 I Hate It

时间:2020-07-29 21:53:09      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:hdu   can   链接   单点   har   def   char   题目   ||   

题目链接

线段树,单点修改,区间最大值查询。


#include<bits/stdc++.h>
using namespace std;

const int N = 2e5 + 10;
int n,m;

#define mid ((l + r) >> 1)
#define ls (nod << 1)
#define rs (nod << 1 | 1)
#define lson ls,l,mid
#define rson rs,mid + 1, r

int mx[N << 2];
void pushup(int nod) { mx[nod] = max(mx[ls], mx[rs]); }
void build(int nod,int l,int r){
    if(l == r) { scanf("%d",&mx[nod]); return ; }
    build(lson); build(rson); pushup(nod);
}
void update(int nod,int l,int r,int pos,int v){
   if(l == r) { mx[nod] = v; return ;}
   if(pos <= mid) update(lson,pos,v); else update(rson,pos,v);
   pushup(nod);
}
int query(int nod,int l,int r,int ll,int rr){
    if(l > rr || r < ll) return -2000000000;
    if(ll <= l && r <= rr) return mx[nod];
    return max(query(lson,ll,rr), query(rson,ll,rr));
}

int main(){
    while(scanf("%d%d",&n,&m) != EOF){
        build(1,1,n);
        while(m --){
            char c;
            scanf(" %c",&c);
            if(c == ‘Q‘){
                int x,y; scanf("%d%d",&x,&y);
                if(x > y) swap(x,y);
                printf("%d\n",query(1,1,n,x,y));
            }
            if(c == ‘U‘){
                int x,y; scanf("%d%d",&x,&y);
                update(1,1,n,x,y);
            }
        }
    }
    return 0;
}

HDU - 1754 I Hate It

标签:hdu   can   链接   单点   har   def   char   题目   ||   

原文地址:https://www.cnblogs.com/zzhzzh123/p/13399235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!