zoukankan      html  css  js  c++  java
  • HDU 1754 I Hate It

    线段树裸题。

    单点修改+区间查询。

    const int N=2e5+10;
    struct Node
    {
        int l,r;
        int maxv;
    }tr[N<<2];
    int score[N];
    int n,m;
    
    void pushup(int u)
    {
        tr[u].maxv=max(tr[lc].maxv,tr[rc].maxv);
    }
    
    void build(int u,int l,int r)
    {
        tr[u]={l,r};
        if(l == r)
        {
            tr[u].maxv=score[l];
            return;
        }
    
        int mid=l+r>>1;
        build(lc,l,mid);
        build(rc,mid+1,r);
        pushup(u);
    }
    
    void modify(int u,int x,int v)
    {
        if(tr[u].l == tr[u].r)  // 找到叶节点
        {
            tr[u].maxv=v;
            return;
        }
        int mid=tr[u].l+tr[u].r>>1;
        if(x <= mid) modify(lc,x,v);
        if(x > mid) modify(rc,x,v);
        pushup(u);
    }
    
    int query(int u,int l,int r)
    {
        if(l <= tr[u].l && tr[u].r <= r)
            return tr[u].maxv;
    
        int mid=tr[u].l+tr[u].r>>1;
        int res=0;
        if(l <= mid) res=max(res,query(lc,l,r));
        if(r > mid) res=max(res,query(rc,l,r));
        return res;
    }
    
    int main()
    {
        while(cin>>n>>m)
        {
            for(int i=1;i<=n;i++) scanf("%d",&score[i]);
    
            build(1,1,n);
    
            while(m--)
            {
                char op[2];
                int x,y;
                scanf("%s%d%d",op,&x,&y);
                if(*op == 'Q')
                    cout<<query(1,x,y)<<endl;
                else
                    modify(1,x,y);
            }
        }
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    ZOJ 3818 Pretty Poem
    HDU 4597 Play Game
    HDU 4497 GCD and LCM
    CSU 1335 高桥和低桥
    UVA 10791 Minimum Sum LCM
    CSU 1119 Collecting Coins
    CSU 1120 病毒
    UVA 12169 Disgruntled Judge
    HDU 1301 Jungle Roads
    POJ 1258 Agri-Net
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14671239.html
Copyright © 2011-2022 走看看