zoukankan      html  css  js  c++  java
  • RMQ问题--ST

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 const int maxn = 1e5+5;
     6 int f[maxn][25];
     7 int n,m;
     8 inline int RMQ(int l,int r){
     9     int k = log2(r-l+1);
    10     return min(f[l][k],f[r-(1<<k)+1][k]);
    11 }
    12 inline void ST(){
    13     for(int j = 1;j <= 20;j++)
    14         for(int i = 1;i <= n;i++)
    15             if(i+(1<<j)-1 <= n)
    16                 f[i][j] = min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
    17 }
    18 int main(){
    19     cin>>n>>m;
    20     for(int i = 1;i <= n;i++)
    21         scanf("%d",&f[i][0]);
    22     ST();
    23     for(int i = 1,x,y;i <= m;i++){
    24         scanf("%d%d",&x,&y);
    25         printf("%d ",RMQ(x,y));
    26     }
    27     return 0;
    28 }
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int maxn = 1e5+5;
     5 int a[maxn],f[maxn][25],log[maxn];
     6 int n,m;
     7 inline int RMQ(int l,int r){
     8     int k = log[r-l+1];
     9     return min(f[l][k],f[r-(1<<k)+1][k]);
    10 }
    11 inline void ST(){
    12     log[0] = -1;
    13     for(int i = 1;i <= n;i++){
    14         f[i][0] = a[i];
    15         log[i] = log[i>>1]+1;
    16     }
    17     for(int j = 1;j <= log[n];j++)
    18         for(int i = 1;(i+(1<<j)-1 <= n) && (i <= n);i++)
    19             f[i][j] = min(f[i][j-1],f[i+(1<<j-1)][j-1]);
    20 }
    21 int main(){
    22     cin>>n>>m;
    23     for(int i = 1;i <= n;i++)
    24         scanf("%d",&a[i]);
    25     ST();
    26     for(int i = 1,x,y;i <= m;i++){
    27         scanf("%d%d",&x,&y);
    28         printf("%d ",RMQ(x,y));
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    性能测试工具---loadrunner
    数据库Mysql监控及优化
    数据库基础----Mysql
    常见的性能问题及定位方法
    中间件
    JVM学习篇章(二)
    PhpStorm 配置本地断点调试
    TCP连接 三次握手 四次挥手
    https 的理解
    使用GatewayWorker 开发个即时聊天demo
  • 原文地址:https://www.cnblogs.com/wangyifan124/p/10964218.html
Copyright © 2011-2022 走看看