zoukankan      html  css  js  c++  java
  • poj2019(二维RMQ)

    题目连接:http://poj.org/problem?id=2019

    只是增加一个维度,类比一维即可。

    好理解,但是可以做的更好http://www.cnblogs.com/yijiull/p/6757935.html

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<algorithm>
     5 using namespace std;
     6 const int maxn=270;
     7 int p[maxn][maxn];
     8 int pmax[maxn][maxn][20];
     9 int pmin[maxn][maxn][20];
    10 int  n,b,k;
    11 
    12 void RMQ_INIT()
    13 {
    14     int f=log(n+0.0)/log(2.0);
    15     for(int i=1;i<=n;i++)
    16         for(int j=1;j<=n;j++)
    17             pmax[i][j][0]=pmin[i][j][0]=p[i][j];
    18     for(int i=1;i<=n;i++)
    19     for(int k=1;k<=f;k++)
    20     for(int j=1;j+(1<<k)-1<=n;j++)
    21     {
    22         pmax[i][j][k]=max(pmax[i][j][k-1],pmax[i][j+(1<<k-1)][k-1]);
    23         pmin[i][j][k]=min(pmin[i][j][k-1],pmin[i][j+(1<<k-1)][k-1]);
    24     }
    25     return;
    26 }
    27 
    28 
    29 int rmq(int r,int c)
    30 {
    31     int l=c,rr=c+b-1;
    32     int k=log(b+0.0)/log(2.0);
    33     int maxx=-0x3f3f3f3f,minn=0x3f3f3f3f;
    34     for(int i=r;i<r+b;i++)
    35     {
    36         maxx=max(maxx,max(pmax[i][l][k],pmax[i][rr-(1<<k)+1][k]));
    37         minn=min(minn,min(pmin[i][l][k],pmin[i][rr-(1<<k)+1][k]));
    38     }
    39     return maxx-minn;
    40 }
    41 int main()
    42 {
    43     while(scanf("%d%d%d",&n,&b,&k)!=EOF)
    44     {
    45         for(int i=1;i<=n;i++)
    46             for(int j=1;j<=n;j++)
    47                 scanf("%d",&p[i][j]);
    48         RMQ_INIT();
    49         int r,c;
    50         while(k--)
    51         {
    52             scanf("%d%d",&r,&c);
    53             printf("%d
    ",rmq(r,c));
    54         }
    55     }
    56 
    57 }
  • 相关阅读:
    JVM字节码(七)
    JVM字节码(六)
    JVM字节码(五)
    JVM字节码(四)
    JVM字节码(三)
    JVM字节码(二)
    JVM字节码(一)
    JVM类加载器(五)
    JVM类加载器(四)
    php之 人员的权限管理
  • 原文地址:https://www.cnblogs.com/yijiull/p/6754787.html
Copyright © 2011-2022 走看看