zoukankan      html  css  js  c++  java
  • 51NOD 1174 区间中最大的数

    RMQ  

    感觉线段树 也就那样儿

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 10010;
    int s[maxn<<2];
    
    void up(int rt){
        s[rt] = max(s[rt<<1] , s[rt<<1|1]);
    }
    
    void build(int l,int r,int rt){
        if(l == r){
            scanf("%d",&s[rt]);
            return ;
        }
        int mid = (l + r)/2;
        build(l, mid, rt<<1);
        build(mid+1, r, rt<<1|1);
        up(rt);
    }
    
    void add(int i,int j,int l,int r,int rt){ // 对第i位变成j 这个add函数没验证
        if(l == r){
            s[rt] = j;
            return ;
        }
        int mid = (l + r)/2;
        if(i <= mid)
            add(i,j,l,mid,rt<<1);
        if(i > mid)//或者用else 也可以  因为只是i和mid的判断
            add(i,j,mid+1,r,rt<<1|1);
        up(rt);
    }
    
    int query(int L,int R,int l,int r,int rt){
        if(L <= l && r <= R){
            return s[rt];
        }
        int ans = 0;
        int mid = (l + r)/2;
        if(L <= mid)
            ans = max(ans, query(L,R,l,mid,rt<<1));
        if(R > mid)
            ans = max(ans,query(L,R,mid+1,r,rt<<1|1));
        return ans;
    }
    
    int main (){
    
        int n,m;
        scanf("%d", &n);
        build(1,n,1);
        scanf("%d", &m);
        for(int i=1; i <= m;i++){
            int l,r;
            scanf("%d %d",&l,&r);
            printf("%d
    " , query(l+1,r+1,1,n,1));
        }
        return 0;
    }

    等待是最好的成长。

  • 相关阅读:
    一点关于this的理解
    BFC引发的关于position的思考
    JS HTML标签尺寸距离位置定位计算
    JS获取网页宽高方法集合
    JSDOM之节点
    并发- synchronized,锁
    公共文件下载-结构设计
    订单模块-结构设计
    ES-update
    ES使用笔记
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7327619.html
Copyright © 2011-2022 走看看