zoukankan      html  css  js  c++  java
  • [Usaco2007 Jan] Balanced Lineup

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 1640  Solved: 1041

    Description

    每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛. 但是为了避免水平悬殊,牛的身高不应该相差太大. John 准备了Q (1 <= Q <= 180,000) 个可能的牛的选择和所有牛的身高 (1 <= 身高 <= 1,000,000). 他想知道每一组里面最高和最低的牛的身高差别. 注意: 在最大数据上, 输入和输出将占用大部分运行时间.

    Input

    * 第一行: N 和 Q. * 第2..N+1行: 第i+1行是第i头牛的身高.

     * 第N+2..N+Q+1行: 两个整数, A 和 B (1 <= A <= B <= N), 表示从A到B的所有牛.

    Output

    *第1..Q行: 所有询问的回答 (最高和最低的牛的身高差), 每行一个.

    Sample Input

    6 3
    1
    7
    3
    4
    2
    5
    1 5
    4 6
    2 2

    Sample Output

    6
    3
    0

    HINT

    Source

    Gold

    思路

    st表;

    代码实现

     1 #include<cmath>
     2 #include<cstdio>
     3 const int maxn=5e4+10;
     4 inline int min_(int x,int y){return x<y?x:y;}
     5 inline int max_(int x,int y){return x>y?x:y;}
     6 int n,m,p,l,r;
     7 int in[maxn][16],ax[maxn][16];
     8 int main(){
     9     scanf("%d%d",&n,&m);
    10     for(int i=1;i<=n;i<<=1) p++;
    11     for(int i=1;i<=n;i++) scanf("%d",&in[i][0]),ax[i][0]=in[i][0];
    12     for(int j=1;j<p;j++)
    13     for(int i=1;i<=n;i++)
    14     if(i+(1<<j-1)>n) in[i][j]=in[i][j-1],ax[i][j]=ax[i][j-1];
    15     else in[i][j]=min_(in[i][j-1],in[i+(1<<j-1)][j-1]),ax[i][j]=max_(ax[i][j-1],ax[i+(1<<j-1)][j-1]);
    16     for(int i=1;i<=m;i++){
    17         scanf("%d%d",&l,&r);
    18         p=log2(r-l+1);
    19         printf("%d
    ",max_(ax[l][p],ax[r-(1<<p)+1][p])-min_(in[l][p],in[r-(1<<p)+1][p]));
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. ......
    UVA 1597 Searching the Web
    UVA 1596 Bug Hunt
    UVA 230 Borrowers
    UVA 221 Urban Elevations
    UVA 814 The Letter Carrier's Rounds
    UVA 207 PGA Tour Prize Money
    UVA 1592 Database
    UVA 540 Team Queue
    UVA 12096 The SetStack Computer
  • 原文地址:https://www.cnblogs.com/J-william/p/8045941.html
Copyright © 2011-2022 走看看