zoukankan      html  css  js  c++  java
  • 【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队

    【算法】线段树

    #include<cstdio>
    #include<cctype>
    #include<algorithm>
    using namespace std;
    const int inf=0x3f3f3f3f,maxn=50010;
    struct tree{int l,r,mins,maxs;}t[maxn*3];
    int n,q,a[maxn];
    int read_t;char c;
    int read()
    {
        read_t=0;
        while(!isdigit(c=getchar()));
        do{read_t=read_t*10+c-'0';}while(isdigit(c=getchar()));
        return read_t;
    }
    void build(int k,int l,int r)
    {
        t[k].l=l;t[k].r=r;
        if(l==r)t[k].mins=a[l],t[k].maxs=a[r];
         else
          {
              int mid=(l+r)>>1;
              build(k<<1,l,mid);
              build(k<<1|1,mid+1,r);
              t[k].mins=min(t[k<<1].mins,t[k<<1|1].mins);
              t[k].maxs=max(t[k<<1].maxs,t[k<<1|1].maxs);
          }
    }
    int askmaxs(int k,int l,int r)
    {
        int left=t[k].l,right=t[k].r;
        if(l<=left&&r>=right)return t[k].maxs;
         else
          {
              int mid=(left+right)>>1,ans=0;
              if(l<=mid)ans=askmaxs(k<<1,l,r);
              if(r>mid)ans=max(ans,askmaxs(k<<1|1,l,r));
              return ans;
          }
    }
    int askmins(int k,int l,int r)
    {
        int left=t[k].l,right=t[k].r;
        if(l<=left&&r>=right)return t[k].mins;
         else
          {
              int mid=(left+right)>>1,ans=inf;
              if(l<=mid)ans=askmins(k<<1,l,r);
              if(r>mid)ans=min(ans,askmins(k<<1|1,l,r));
              return ans;
          }
    }
    int main()
    {
        n=read();q=read();
        for(int i=1;i<=n;i++)a[i]=read();
        build(1,1,n);
        for(int i=1;i<=q;i++)
         {
             int u=read(),v=read();
             printf("%d
    ",askmaxs(1,u,v)-askmins(1,u,v));
         }
        return 0;
    }
    View Code
  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/onioncyc/p/6200595.html
Copyright © 2011-2022 走看看