zoukankan      html  css  js  c++  java
  • hdu5443 线段树 长春网赛

    #include<stdio.h>
    #include<string.h>
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define maxn 1100
    int sum[maxn<<2];
    int max(int x,int y)
    {
        return x>y?x:y;
    }
    void PushUp(int rt)
    {
        sum[rt]=max(sum[rt<<1],sum[rt<<1|1]);
    }
    void build(int l,int r,int rt)
    {
        if(l == r)
        {
            scanf("%d",&sum[rt]);
            return;
        }
        int m = (r + l)/2;
        build(lson);
        build(rson);
        PushUp(rt);
    }
    void Updata(int p,int v,int l,int r,int rt)
    {
        if(l==r)
        {
            sum[rt]=v;
            return ;
        }
        int m=(l+r)/2;
        if(m < p)
            Updata(p,v,rson);
        else 
            Updata(p,v,lson);
        PushUp(rt);
    }
    int Query(int L,int R,int l,int r,int rt)
    {
        if(L<=l && R>=r)
        {
            return sum[rt];
        }
        int ret=-9999999;
        int m=(l + r)/2;
        if(m < L)
        {
            ret=max(ret,Query(L,R,rson));
        }
        else if(m >= R)
        {
            ret=max(ret,Query(L,R,lson));
        }
        else
        {
            ret=max(ret,Query(L,R,rson));
            ret=max(ret,Query(L,R,lson));
        }
        return ret;
    }
    int main()
    {
        int n,m,i;
        char way[10];
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            build(1,n,1);
            int time;
            scanf("%d",&time);
            while(time--)
            {
                int a,b;
                scanf("%d%d",&a,&b);
                printf("%d
    ",Query(a,b,1,n,1));
            }
        }
    }
  • 相关阅读:
    凸包模板
    1060E Sergey and Subway(思维题,dfs)
    1060D Social Circles(贪心)
    D
    牛客国庆集训派对Day2
    网络流
    Tarjan算法(缩点)
    莫队分块算法
    计算几何
    hdu5943素数间隙与二分匹配
  • 原文地址:https://www.cnblogs.com/sweat123/p/4807984.html
Copyright © 2011-2022 走看看