HDOJ1745 I hate it【线段树】

简介:
复制代码
#include <stdio.h>
#include <stdlib.h>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define maxn 200001
int Max[maxn<<2];
void build(int l,int r,int rt)
{
    int m;
    if (l==r)
    {
        scanf("%d",&Max[rt]);
        return;
    }
    m=((l+r)>>1);
    build(lson);
    build(rson);
    Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);
}
void update(int p,int updt,int l,int r,int rt)
{
    int m;
    if(l==r)
    {
        Max[rt]=updt;
        return;
    }
    m=((l+r)>>1);
    if (p<=m)
        update(p,updt,lson);
    else
        update(p,updt,rson);
    Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);
}
int query(int L,int R,int l,int r,int rt)
{
    int m,ret=0,maxl,maxr;
    if (L<=l&&R>=r)
        return Max[rt];
    m=((l+r)>>1);
    if (R<=m)
        ret=query(L,R,lson);
    else
        if(L>m)
            ret=query(L,R,rson);
        else
        {
            maxl=query(L,m,lson);
            maxr=query(m+1,R,rson);
            ret=max(maxl,maxr);
        }
            
    return ret;
}
int main()
{
    int n,a,b,m,i;
    char op[2];
    while (scanf("%d%d",&n,&m)!=EOF)
    {
        build(1,n,1);
        while (m--)
        {
            scanf("%s%d%d",op,&a,&b);
            if(op[0]=='Q')
                printf("%d\n",query(a,b,1,n,1));
            else
                if(op[0]=='U')
                    update(a,b,1,n,1);
        }
    }
    return 0;
}
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/04/28/2475489.html,如需转载请自行联系原作者

相关文章
|
7月前
hdoj 3555 BOMB(数位dp)
hdoj 3555 BOMB(数位dp)
19 0
HDOJ 1058 Humble Numbers(打表过)
HDOJ 1058 Humble Numbers(打表过)
82 0
HDOJ 2089 不要62(打表)
HDOJ 2089 不要62(打表)
99 0
HDOJ 1995 汉诺塔V
HDOJ 1995 汉诺塔V
94 0
HDOJ 2032 杨辉三角
HDOJ 2032 杨辉三角
94 0
|
机器学习/深度学习 人工智能 BI
HDOJ/HDU 2550 百步穿杨(注意排序)
HDOJ/HDU 2550 百步穿杨(注意排序)
87 0
HDOJ/HDU 2551 竹青遍野(打表~)
HDOJ/HDU 2551 竹青遍野(打表~)
87 0
|
C语言
HDOJ/HDU Tempter of the Bone(深搜+奇偶性剪枝)
HDOJ/HDU Tempter of the Bone(深搜+奇偶性剪枝)
79 0
|
算法 C++
HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
89 0
HDOJ(HDU) 2304 Electrical Outlets(求和、、)
HDOJ(HDU) 2304 Electrical Outlets(求和、、)
87 0