首页 > 其他分享 >P3865 【模板】ST 表

P3865 【模板】ST 表

时间:2022-12-13 11:25:10浏览次数:74  
标签:int ST 思路 超时 模板 P3865

P3865 【模板】ST 表

题目简述

对于给定的数列,要求以\(\theta(1)\)的时间复杂度计算出\([l_i,r_i]\)中最大值


思路

没什么可讲的,但要注意,计算区间长度的对数要是 log2(r-l+1) 不加1的话大多数情况下没问题,但是当 l=r 的时候会报错
BTW,用scanf printf 不会超时,用cin cout 是会超时的qwq
具体思路可以参考这个博客


代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N],s[N][25];
int n,m;
void in(int &x){
  x=0;
  int f=1;
  char c=getchar();
  while(c>'9'||c<'0'){
    if(c=='-')f=-1;
    c=getchar();
  }
  while(c>='0'&&c<='9'){
    x=(x<<1)+(x<<3)+c-'0';
    c=getchar();
  }
  x*=f;
}
void pre_work(){
  for(int i=1;(1<<i)<=n&&i<25;i++){
    for(int j=1;j+(1<<i)-1<=n;j++){
      s[j][i]=max(s[j][i-1],s[j+(1<<(i-1))][i-1]);
    }
  }
}
void query(int l,int r){
  int k=log2(r-l+1);
  printf("%d\n",max(s[l][k],s[r-(1<<k)+1][k]));
}

int main(){
  in(n);in(m);
  for(int i=1;i<=n;i++)in(s[i][0]);
  pre_work();
  for(int i=1;i<=m;i++){
    int l,r;
    in(l);in(r);
    query(l,r);
  }
  return 0;
}

标签:int,ST,思路,超时,模板,P3865
From: https://www.cnblogs.com/fleabag/p/16978058.html

相关文章

  • P5905 【模板】Johnson 全源最短路
    P5905【模板】Johnson全源最短路...处理负权边的方法十分巧妙,就像是势能一样算法上文链接有详解,就不赘述了,这样就实现了dij也可以处理负边是需要提前预处理一遍,建立......
  • Restful风格响应
    /***<P>*<B>Description:RESTFUL风格的请求结果数据结构</B>*</P>*RevisionTrail:(Date/Author/Description)*2022/12/13RyanHuangCREATE**@aut......
  • 【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见
    问题描述在PHP项目部署在AppService后,上传文件如果大于1MB就会遇见413RequestEntityTooLarge的问题。 问题解决目前这个问题,首先需要分析应用所在的环境。在AppSe......
  • Registry&Harbor私有仓库问题
    1、按照我对docker的理解,宿主机a,想要访问宿主机机b中的容器,哪怕是局域网访问,一定要让这个容器绑定宿主机b的物理端口,然后通过宿主机b的ip和端口访问但是老师今天的课程中,他......
  • ElasticSearch原理篇
    一、开篇几个问题 1、大规模数据如何检索?当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑:1)用什么数据库好?(MySQL、sybase、Oracle、达......
  • 数据模板 DataTemplate
    <Grid><ListBoxx:Name="list"><ListBox.ItemTemplate><DataTemplate><StackPanelOrientation="Horizont......
  • pytest + yaml 框架 -12.支持执行sql 和 断言sql
    前言当我们在测试环境写好自动化的代码,领导说你把代码部署到联调环境再测一测,这时候去改用例里面的配置是很痛苦的。所以我们在设计自动化用例的时候,就先要想到多环境的......
  • linux c 语言 strsep trim isspace
     函数原型:              char*strtok(char*s,constchar*delim);                       char*strsep......
  • 【开源系统脚手架】人人快速开发框架 人人VUE(renren-fast-vue)启动教程
     代码​​https://www.renren.io/guide/#project​​​​https://github.com/renrenio/renren-fast-vue​​ 1.nodejs需使用8.0版本2.更改策略,设置权限(管理员打开cmd)......
  • 【安装】Linux安装Elasticsearch教程
    Elastic官网​​开源搜索:Elasticsearch、ELKStack和Kibana的开发者|Elastic​​Elasticsearch(官网:​​https://www.elastic.co/cn/products/elasticsearch​​ )需要......