• BZOJ 1636: [Usaco2007 Jan]Balanced Lineup


    noip要来了,刷点基础水题。

    题意:

    RMQ,给你N个数,Q个询问,每次查询[l,r]内,最大值减最小值是多少。

    写的ST。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    
    //by zrt
    //problem:
    using namespace std;
    typedef long long LL;
    const int inf(0x3f3f3f3f);
    const double eps(1e-9);
    int maxx[50005][20],minn[50005][20];
    int lg;
    // [ )
    int main(){
        #ifdef LOCAL
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
        #endif
        int n,q;
        scanf("%d%d",&n,&q);
        for(int i=1;i<=n;i++){
            scanf("%d",&maxx[i][0]);
            minn[i][0]=maxx[i][0];
        }
        for(lg=0;(1<<lg)<=n;lg++);lg--;
        for(int j=1;j<=lg;j++){
            for(int i=1;i+(1<<j)<=n+1;i++){
                minn[i][j]=min(minn[i][j-1],minn[i+(1<<(j-1))][j-1]);
                maxx[i][j]=max(maxx[i][j-1],maxx[i+(1<<(j-1))][j-1]);
            }
        }
        for(int i=0,x,y;i<q;i++){
            scanf("%d%d",&x,&y);
            int a;
            for(a=0;(1<<a)<=y-x+1;a++);a--;
            printf("%d
    ",max(maxx[x][a],maxx[y-(1<<a)+1][a])-min(minn[x][a],minn[y-(1<<a)+1][a]));
        }
        return 0;
    }
  • 相关阅读:
    8.14-T1村通网(pupil)
    8.10-Day2T3 镇守府
    8.10-Day2T2 吃喝大法好
    8.10-Day2T1最小值
    8.10-DayT3游走(wander)
    8.10-Day1T2圈(circle)
    8.10-Day1T1-数字(number)
    bzoj2462: [BeiJing2011]矩阵模板
    8.7-Day1T1
    k8s高可用部署后续:SLB
  • 原文地址:https://www.cnblogs.com/zrts/p/bzoj1636.html
Copyright © 2020-2023  润新知