以前我一直不想学倍增求区间最小值,因为有线段树。可是如果在SA里用线段树的话......

所以填坑学了一发,当然没有线段树好敲......第一次敲心慌,感觉好多细节容易敲错......

对于稀疏表一个很重要的优化就是预处理出log2值存在数组中,而且因为对于单调递增的len,log2len 的值也是单调递增的,只需O(n)复杂度的预处理就可以真正达到O(1)查询,否则的话每次查询的复杂度是O(log)级别的。这个优化对于查询多的题目有多重要?在现在越来越慢的COGS评测机以及机房的渣渣WIFI网速的综合作用下,依然比没有预处理的快了一倍以上,如果到隔壁机房网速给力的情况下,跟线段树的差距会更小。

// q.c#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int M=1000000+10;
int n,m,h[M],logn[M],maxx[M][21];
void build() {for(int i=1;i<=n;i++) maxx[i][0]=h[i];for(int j=1;(1<<j)<=n;j++) for(int i=1;i+(1<<j)-1<=n;i++) maxx[i][j]=max(maxx[i][j-1],maxx[i+(1<<j-1)][j-1]);for(int i=1,j=0;i<=n;i++) {for(;(1<<j+1)<=i;++j);logn[i]=j;}
}
int query(int l,int r) {int k=logn[r-l+1];return max(maxx[l][k],maxx[r-(1<<k)+1][k]);
}
int main() {freopen("climb.in","r",stdin);freopen("climb.out","w",stdout);scanf("%d",&n); ++n;for(int i=1;i<=n;i++) scanf("%d",&h[i]);build(); int a,b,ans;scanf("%d",&m);for(int i=1;i<=m;i++) {scanf("%d%d",&a,&b);ans=query(a+1,b+1);printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/qjs12/p/8696568.html

[COGS58] 延绵的山峰相关推荐

  1. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

  2. 栈与队列10——可见的山峰对数量

    题目 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度.有两个方向:next方向(逆时针方向),last 方向(顺时针). 山峰A和山峰B相互看见的条件为: 如果A和B是同一座山,认为 ...

  3. codevs 1531 山峰

    codevs 1531 山峰 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi ...

  4. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs

    题目分析 来源:acwing 分析:这道题还是flood fill算法的应用,不同点在于八个方向扫描,习惯性采用二重循环来扫描周围的8个方向:其次,这里需要统计周围比它高的和比它矮的,这点用bool变 ...

  5. JZOJ__Day 10:【普及模拟】【USACO】山峰暸望

    题目描述 一天,Bessie在眺望美丽的威斯康星的群山的时候,她突然产生了疑问:哪座山是最宽的捏?她决定在地平线上,利用她的新发明的山峰高度测量仪依次做N (1 <= N <= 10,00 ...

  6. graphpad如何做x轴在上方的图_R-ggridges包:山峰叠峦图

    很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...

  7. 左神算法:可见的山峰对数量(有重复值的情况)(Java版)

    本题来自左神<程序员面试代码指南>"可见的山峰对数量"题目. 题目 牛客在线OJ:可见的山峰对数量(进阶) 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的 ...

  8. 山峰和山谷(信息学奥赛一本通-T1454)

    [题目描述] 给定一个 n×n 的网格状地图,每个方格 (i,j)有一个高度 wij​​ .如果两个方格有公共顶点,则它们是相邻的. 定义山峰和山谷如下: 均由地图上的一个连通块组成: 所有方格高度都 ...

  9. 密度图的密度估计_R-ggridges包:山峰叠峦图

    很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...

最新文章

  1. 生命如何在复杂环境中生存?信息、调控和几何结构的交织
  2. Linux2.6内核--内存管理(2)--区
  3. 原型与原型链的简单理解
  4. Python学习笔记:常用第三方模块(1)
  5. 坑!自己走过的坑...
  6. pandas保存为csv格式文件
  7. 关于《构建之法》阅读笔记 的致歉博客
  8. Win7系统主题路径
  9. python—IFrame:在jupyter notebook中展示某个网页的情况
  10. QToolButton按钮
  11. 【日常】DES加密算法python实现_以密码编码学与网络安全——原理与实践(第六版)课后习题3.11为例
  12. Dell笔记本耳机孔插进入没有反应问题
  13. .tpk格式文件简介
  14. Outlook打开工享Calendar
  15. 【JS组件系列】——表格组件神器:bootstrap table(二:父子表和行列调序)
  16. 史上最详细How to Use Time Information Effectively Combining with Time Shift Module for Lipreading文章记录
  17. 用python绘制玫瑰花
  18. 台式电脑耳机没有声音的解决办法
  19. Total Access Emailer维护审计跟踪
  20. 教您运气不好时如何转运

热门文章

  1. SAP Fiori里的List是如何做到懒加载Lazy load的
  2. python汉诺塔问题_Python汉诺塔问题
  3. 新安装的mysql登录不了_mysql 5.6 新安装登录
  4. 安装navicat之后双击就会闪退_Adobe 2020版本,安装教程来咯
  5. python调用random失败_python怎么调用random
  6. nginx php post限制,nginx + php 跨域问题,GET可以跨域成功,POST失败
  7. getelementbyid获取不到js加载的元素_Selenium元素定位不到?JS注入轻松搞定!
  8. linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...
  9. 到另一个文件夹 复制hdfs上的文件_HDFS——如何将文件从HDFS复制到本地
  10. linux 22.3 终端,Linux系统服务Day.22