zoukankan      html  css  js  c++  java
  • ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题解:

    ST表板子

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #define max(a,b) ((a)>(b)?(a):(b))
     5 #define min(a,b) ((a)<(b)?(a):(b))
     6 using namespace std;
     7 const int maxn=50050,max_log=18,maxlog=17,inf=1<<30;
     8 int Fmx[maxn][max_log],N,Q,Fmn[maxn][max_log],LOG[maxn],A,B;
     9 int main(){
    10     scanf("%d%d",&N,&Q);
    11     for(int i=0;i<=N;i++)
    12         for(int j=0;j<=maxlog;j++)
    13             Fmn[i][j]=inf;
    14     for(int i=1;i<=N;i++){
    15         scanf("%d",&Fmx[i][0]);
    16         Fmn[i][0]=Fmx[i][0];
    17     }
    18     LOG[0]=-1;
    19     for(int i=1;i<=N;i++)LOG[i]=LOG[i>>1]+1;
    20     for(int j=1;j<=maxlog;j++)//
    21         for(int i=1;i+(1<<j)-1<=N;i++){
    22             Fmx[i][j]=max(Fmx[i][j-1],Fmx[i+(1<<(j-1))][j-1]);
    23             Fmn[i][j]=min(Fmn[i][j-1],Fmn[i+(1<<(j-1))][j-1]);
    24         }
    25     while(Q--){
    26         scanf("%d%d",&A,&B);
    27         int x=LOG[B-A+1],ans1,ans2;
    28         ans1=max(Fmx[A][x],Fmx[B-(1<<x)+1][x]);
    29         ans2=min(Fmn[A][x],Fmn[B-(1<<x)+1][x]);
    30         printf("%d
    ",ans1-ans2);
    31     }
    32     return 0;
    33 }

    By:AlenaNuna

  • 相关阅读:
    tomcat监控与优化
    rpm打包
    Rewrite和location 区别
    LNMP服务
    yum仓库脚本
    用户管理的脚本2
    pxe装机脚本
    用户管理的脚本1
    磁盘管理综合测试题
    MySQL 增量备份介绍及案例演示
  • 原文地址:https://www.cnblogs.com/AlenaNuna/p/10574824.html
Copyright © 2011-2022 走看看