zoukankan      html  css  js  c++  java
  • POJ 3264 Balanced Lineup

    Balanced Lineup

    ST表的裸题

    • ST采用倍增和动态规划的思想解决静态 RMQ问题
    • 初始化:空间复杂度O(nlogn),时间复杂度O(nlogn)
    • 查询一次 O(1);而且这是常数非常小的O(1),而不是像线段树这种毒瘤数据结构(常数非常大)
    • 最近做一道题,ST表和线段树如果算时间复杂度都能过,但线段树就是过不了,自己得ST表还超过内存了,坑

    代码:

    const int maxn=50010;
    int N,Q;
    int a[maxn];
    int stmin[maxn][16];
    int stmax[maxn][16];
    void build(){
        scanf("%d %d",&N,&Q);
        for(int i=1;i<=N;i++){
            scanf("%d",&a[i]);
        }
        for(int i=1;i<=N;i++){
            stmin[i][0]=a[i];
            stmax[i][0]=a[i];
        }
        int mlen=floor(log2(N));
        int mul=1;
        for(int j=1;j<=mlen;j++){
            for(int i=1;i<=N&&(i+mul)<=N;i++){
                stmin[i][j]=std::min(stmin[i][j-1],stmin[i+mul][j-1]);
                stmax[i][j]=std::max(stmax[i][j-1],stmax[i+mul][j-1]);
            }
            mul=mul*2;
        }
    
    }
    int check(int x,int  y){
        int len=floor(log2(y-x+1));
        int minv=std::min(stmin[x][len],stmin[y-(1<<len)+1][len]);
        int maxv=std::max(stmax[x][len],stmax[y-(1<<len)+1][len]);
        return maxv-minv;
    }
    
  • 相关阅读:
    Python之正则表达式模块
    Python之装饰器复习
    Django请求生命周期之响应内容
    网络编程
    Django实现验证码
    JSONP跨域请求
    原生Ajax(XMLHttpRequest)
    JavaScript函数与面向对象
    JavaScript作用域
    Django之Model操作
  • 原文地址:https://www.cnblogs.com/fridayfang/p/9526877.html
Copyright © 2011-2022 走看看