[COGS58] 延绵的山峰
以前我一直不想学倍增求区间最小值,因为有线段树。可是如果在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] 延绵的山峰相关推荐
- 关于机器学习中山峰聚类算法的说明
前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...
- 栈与队列10——可见的山峰对数量
题目 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度.有两个方向:next方向(逆时针方向),last 方向(顺时针). 山峰A和山峰B相互看见的条件为: 如果A和B是同一座山,认为 ...
- codevs 1531 山峰
codevs 1531 山峰 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi ...
- 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs
题目分析 来源:acwing 分析:这道题还是flood fill算法的应用,不同点在于八个方向扫描,习惯性采用二重循环来扫描周围的8个方向:其次,这里需要统计周围比它高的和比它矮的,这点用bool变 ...
- JZOJ__Day 10:【普及模拟】【USACO】山峰暸望
题目描述 一天,Bessie在眺望美丽的威斯康星的群山的时候,她突然产生了疑问:哪座山是最宽的捏?她决定在地平线上,利用她的新发明的山峰高度测量仪依次做N (1 <= N <= 10,00 ...
- graphpad如何做x轴在上方的图_R-ggridges包:山峰叠峦图
很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...
- 左神算法:可见的山峰对数量(有重复值的情况)(Java版)
本题来自左神<程序员面试代码指南>"可见的山峰对数量"题目. 题目 牛客在线OJ:可见的山峰对数量(进阶) 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的 ...
- 山峰和山谷(信息学奥赛一本通-T1454)
[题目描述] 给定一个 n×n 的网格状地图,每个方格 (i,j)有一个高度 wij .如果两个方格有公共顶点,则它们是相邻的. 定义山峰和山谷如下: 均由地图上的一个连通块组成: 所有方格高度都 ...
- 密度图的密度估计_R-ggridges包:山峰叠峦图
很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...
最新文章
- 生命如何在复杂环境中生存?信息、调控和几何结构的交织
- Linux2.6内核--内存管理(2)--区
- 原型与原型链的简单理解
- Python学习笔记:常用第三方模块(1)
- 坑!自己走过的坑...
- pandas保存为csv格式文件
- 关于《构建之法》阅读笔记 的致歉博客
- Win7系统主题路径
- python—IFrame:在jupyter notebook中展示某个网页的情况
- QToolButton按钮
- 【日常】DES加密算法python实现_以密码编码学与网络安全——原理与实践(第六版)课后习题3.11为例
- Dell笔记本耳机孔插进入没有反应问题
- .tpk格式文件简介
- Outlook打开工享Calendar
- 【JS组件系列】——表格组件神器:bootstrap table(二:父子表和行列调序)
- 史上最详细How to Use Time Information Effectively Combining with Time Shift Module for Lipreading文章记录
- 用python绘制玫瑰花
- 台式电脑耳机没有声音的解决办法
- Total Access Emailer维护审计跟踪
- 教您运气不好时如何转运
热门文章
- SAP Fiori里的List是如何做到懒加载Lazy load的
- python汉诺塔问题_Python汉诺塔问题
- 新安装的mysql登录不了_mysql 5.6 新安装登录
- 安装navicat之后双击就会闪退_Adobe 2020版本,安装教程来咯
- python调用random失败_python怎么调用random
- nginx php post限制,nginx + php 跨域问题,GET可以跨域成功,POST失败
- getelementbyid获取不到js加载的元素_Selenium元素定位不到?JS注入轻松搞定!
- linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...
- 到另一个文件夹 复制hdfs上的文件_HDFS——如何将文件从HDFS复制到本地
- linux 22.3 终端,Linux系统服务Day.22