题目描述

有一座延绵不断、跌宕起伏的山,最低处海拔为0,最高处海拔不超过8848米,从这座山的一端走到另一端的过程中,每走1米海拔就升高或降低1米。有Q个登山队计划在这座山的不同区段登山,当他们攀到各自区段的最高峰时,就会插上队旗。请你写一个程序找出他们插旗的高度。

输入输出格式

输入格式:

第1行,输入一个整数N(N≤10^6),表示山两端的跨度。

接下来N+1行,每行一个非负整数Hi(i=0..N且0≤Hi≤40000),表示该位置的海拔高度(单位:米),其中H0 = Hn = 0。

接下来一行是一个正整数Q(Q≤7000),表示登山队的数量。

接下来Q行,每行有两个整数Ai和Bi,分别表示第i个登山队攀爬的区段为[Ai,Bi],其中0≤Ai≤Bi≤N。

输出格式:

输出Q行,每行为一个整数,表示第i个登山队插旗的高度

输入输出样例

输入样例#1:

10
0
1
2
3
2
3
4
3
2
1
0
5
0 10
2 4
3 7
7 9
8 8

输出样例#1:

4
3
4
3
2
#include<bits/stdc++.h>
using namespace std;
inline void read(int &xx)
{xx=0;char cc=getchar();while(cc<'0'|| cc>'9') cc=getchar();while(cc>='0' && cc<='9'){xx=(xx<<3)+(xx<<1)+cc-'0';cc=getchar();}
}
int n,m,a[1000010];
int f[1000010][30];
void pre()
{for(int i=1;i<=n;i++){f[i][0]=a[i];}for(int j=1;(1<<j)<=n;j++){for(int i=1;i+(1<<j)-1<n;i++){f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);}}
}
int querry(int l,int r)
{int k=0;while((1<<(k+1))<=r-l+1) k++;return max(f[l][k],f[r-(1<<k)+1][k]);
}
int main()
{freopen("climb.in","r",stdin);read(n);n++;//cout<<n<<endl;for(int i=1;i<=n;i++){read(a[i]);//cout<<a[i]<<endl;\}pre();read(m);int xx,yy;for(int i=1;i<=m;i++){read(xx);//cout<<xx<<' ';read(yy);//cout<<yy<<endl;printf("%d\n",querry(xx+1,yy+1));}return 0;
}

体比较简单,就是模板。注意长度是0-n

但数据很玄学,自己试一下14行是小于还是小于等于

kmp算法例题 登山相关推荐

  1. 数据结构:详解KMP算法,手工求解next、nextval数组,求模式串的比较次数例题

    KMP 算法 手工求解 next 数组,nextval数组 例题:求模式串的比较次数 2019 年 408 统考真题 设主串 T="abaabaabcabaabc",模式串 S=& ...

  2. 详解图示+例题演练——BF算法+KMP算法基本原理

    KMP算法一直让我们又爱又恨,难以理解却又效率很高. 看了看网上的KMP教程,无论是博客还是视频,大多以文字和逻辑推导的方式呈现,纷繁复杂,晦涩难懂.这会让我们在初学时多走很多弯路. 人类接受知识最直 ...

  3. 0x15.基本数据结构 — 字符串 (KMP算法(含详细证明)和最小表示法)

    目录 一.KMP模式匹配 1.引理: 2.引理证明: 3.使用优化的算法计算nextnextnext数组: 4.luogu P3375 [模板]KMP字符串匹配 5.UVA1328 Period 6. ...

  4. 算法笔记--KMP算法 EXKMP算法

    1.KMP算法 这个博客写的不错:http://www.cnblogs.com/SYCstudio/p/7194315.html 模板: next数组的求解,那个循环本质就是如果相同前后缀不能加上该位 ...

  5. KMP算法总结+Next数组+Nextval数组

    KMP算法是一种用于比较字符串匹配的算法,适用于在一个串中找另一个串是否存在,在这里如果不用字符串中的函数的话,一般能想到的第一种方法就是暴力,即从第一位开始比较. ①暴力方法 查找串:1 2 1 2 ...

  6. 【数据结构】详解KMP算法

    字符串匹配算法:简单来说就是给你一个主串和一个子串,让你查找子串在主串中的位置,找到返回下标. 常见的两种算法:BF算法.KMP算法 这两种算法是怎样的思路呢,我们接着往下看: 目录 BF算法(暴力算 ...

  7. 【考研】串的模式匹配算法——KMP算法(含真题)

    前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结,以便复习. 可搭配以下链接一起学习: [考研]<数据结构>知识点总结.pdf_考研 ...

  8. BF与KMP算法详解

    日升时奋斗,日落时自省 目录 一.BF暴力算法 二.KMP算法 1.next数组 2.next数组优化(nextval) 一.BF暴力算法 暴力算法是普通的模式匹配算法 针对一个主串和一个子串,子串是 ...

  9. 字符串算法——KMP算法C++详解

    简介 KMP 算法是 D.E.Knuth.J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法.该算法相对于 Bru ...

最新文章

  1. switch手柄可以连电脑吗_电脑可以拍照吗
  2. Cochrane系统综述注册的具体流程
  3. 企业越来越重视即时通讯内部应用
  4. c#值get、 set用法(包含自动转换的说明)
  5. C# mvc4.0 MD5测试
  6. php+tcpdf+表格,PHP使用tcpdf类生成PDF文件
  7. 领导与管理的区别与联系
  8. 基于Spring boot的云客服系统实现
  9. Busiest Computing Nodes
  10. 完爆面试官!黑马学java学费多少
  11. python去除字符串中空格和特殊符号的方法
  12. IOS应用的产品设计、交互设计理念断想
  13. 【读论文】LiDAR数据特征的提取与智能分类研究(一)
  14. 如何优化Facebook广告提高您的转化率!Facebook广告投放优化的高阶策略
  15. java ajax jquery分页插件_jQuery ajax分页插件实例代码
  16. vue 实现 广告悬浮效果,并防抖性能优化
  17. 网络爬虫逆向(企名片,创业项目数据获取)
  18. springboot电子书阅读小程序毕业设计毕设作品开题报告开题答辩PPT
  19. DA转换器是什么?快来一起学习一下吧
  20. FileZilla无法连接到服务器

热门文章

  1. 今有兽,六首四足;禽,四首二足,上有七十六首,下有四十六足。问:禽、兽各几何?...
  2. 多项式(Polynomial)的运算——利用单链表
  3. 实验内容:实验六 数组冒泡排序
  4. 自学成才!16个非常优秀的在线教育网站
  5. MySQL详解----------海量数据分页查询优化
  6. PolarDB 阿里云国产化数据库:linux系统下的详细安装步骤手册
  7. xshell 与 putty
  8. mac 播放器MPV 下载地址
  9. 简单密码/华为机试(C/C++)
  10. 深度学习数学基础-概率与信息论