zoukankan      html  css  js  c++  java
  • 洛谷 P3865 【模板】ST表

    题目背景

    这是一道ST表经典题——静态区间最大值

    请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1)

    题目描述

    给定一个长度为 NN 的数列,和 MM 次询问,求出每一次询问的区间内数字的最大值。

    输入输出格式

    输入格式:

     

    第一行包含两个整数 N, MN,M ,分别表示数列的长度和询问的个数。

    第二行包含 NN 个整数(记为 a_iai),依次表示数列的第 ii 项。

    接下来 MM行,每行包含两个整数 l_i, r_ili,ri,表示查询的区间为 [ l_i, r_i][li,ri]

     

    输出格式:

     

    输出包含 MM行,每行一个整数,依次表示每一次询问的结果。

     

    输入输出样例

    输入样例#1: 复制
    8 8
    9 3 1 7 5 6 0 8
    1 6
    1 5
    2 7
    2 6
    1 8
    4 8
    3 7
    1 8
    输出样例#1: 复制
    9
    9
    7
    7
    9
    8
    7
    9

    说明

    对于30%的数据,满足: 1 leq N, M leq 101N,M10

    对于70%的数据,满足: 1 leq N, M leq {10}^51N,M105

    对于100%的数据,满足: 1 leq N leq {10}^5, 1 leq M leq {10}^6, a_i in [0, {10}^9], 1 leq l_i leq r_i leq N1N105,1M106,ai[0,109],1liriN

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m;
    int st[1000010][21];
    int read(){
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int query(int l,int r){
        int k=log2(r-l+1);
        return max(st[l][k],st[r-(1<<k)+1][k]);
    }
    int main(){
        n=read();m=read();
        for(int i=1;i<=n;i++)    st[i][0]=read();
        for(int j=1;j<=21;j++)
            for(int i=1;i+(1<<j)-1<=n;i++)
                st[i][j]=max(st[i][j-1],st[i+(1<<j)-1][j-1]);
        for(int i=1;i<=m;i++){
            int l=read();
            int r=read();
            printf("%d
    ",query(l,r)); 
        }
    }
    100
  • 相关阅读:
    【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
    【Linux】【Services】【DNS】使用Bind搭建DNS服务
    【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)
    【Services】【Web】【LVS】lvs基础概念
    jquery.cookie.js 配置
    SQL Server2008 TIME类型
    Ext.MessageBox
    Ext.Form 自动填写表单内容
    Ext 中xtype一览
    ExtGrid
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/9925382.html
Copyright © 2011-2022 走看看