传送门

分析

我们知道无论往左走还是往右走一定都是往不低于这个点的地方走

于是我们可以考虑用倍增来维护一个点向左和向右走$2^i$最远分别能走到哪里

我们可以先用单调栈求出直走一步的情况,之后再处理倍增数组

值得注意的是有可能一直往左走不是最优情况,而先向右再想左会使答案更优

于是le[x][i]=min(le[le[x][i-1]][i-1],le[ri[x][i-1]][i-1])

向右的情况同理

于是我们进一步考虑如何通过倍增数组得到答案、

我们先从左面往右走,只要走$2^i$不会超过右节点则就让它走这么多步

一直走到不能再走之后再从右往左走

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int LOG = ;
int a[],le[][LOG+],ri[][LOG+],st[],top;
int main(){
int n,m,i,j,k;
scanf("%d%d%d",&n,&k,&m);
for(i=;i<=n;i++)scanf("%d",&a[i]);
top=;
st[]=;
for(i=;i<=n;i++){
while(top&&a[st[top]]<a[i])top--;
le[i][]=st[top];
st[++top]=i;
}
top=;
st[]=n;
for(i=n;i>;i--){
while(top&&a[st[top]]<a[i])top--;
ri[i][]=st[top];
st[++top]=i;
}
for(i=;i<=LOG;i++)
for(j=;j<=n;j++){
le[j][i]=min(le[le[j][i-]][i-],le[ri[j][i-]][i-]);
ri[j][i]=max(ri[ri[j][i-]][i-],ri[le[j][i-]][i-]);
}
while(m--){
int x,y,Ans=,L,R,tl,tr;
scanf("%d%d",&x,&y);
if(x>y)swap(x,y);
L=R=x;
for(i=LOG;i>=;i--){
tl=min(le[L][i],le[R][i]);
tr=max(ri[L][i],ri[R][i]);
if(tr<y){
L=tl,R=tr;
Ans+=(<<i);
}
}
x=R;
L=R=y;
for(i=LOG;i>=;i--){
tl=min(le[L][i],le[R][i]);
tr=max(ri[L][i],ri[R][i]);
if(tl>x){
L=tl,R=tr;
Ans+=(<<i);
}
}
printf("%d\n",Ans);
}
return ;
}

loj2395 [JOISC 2017 Day 2]火车旅行的更多相关文章

  1. JOISC 2017 Day1 T3 烟花棒

    JOISC 2017 Day1 T3 烟花棒 题意: ​ 数轴上有\(N\)人在放烟花,一开始只有第\(K\)个人的烟花是点燃的,烟花燃烧的时间为\(T\)秒,求让所有人的烟花都可以点燃的速度的最小值 ...

  2. JOISC 2017

    Day1 「JOISC 2017 Day 1」开荒者 首先观察部分分发现分档很多,于是考虑一步步思考上来. 首先有一点关键观察(一): 风吹的顺序是无所谓的,令分别往东.西.南.北吹了 \(r, l, ...

  3. 「JOISC 2017 Day 3」幽深府邸

    题解: 和hnoi2018day2t1基本一样 我想了半小时想出了一个很麻烦的做法 写了之后发现假掉了 刚开始想的是 先预处理出每个门要打开至少要在左边的哪个点$L[]$,右边的哪个点$R[]$ 对每 ...

  4. JOISC 2017 自然公园

    吐槽 YMD的课件是真的毒,YYB的也很毒. 题目链接 LOJ sol 我是一个一个Subtask做的... Subtask 1 \(O(n^2)\)枚举每两个点有没有边即可. Subtask 2 链 ...

  5. loj 2392「JOISC 2017 Day 1」烟花棒

    loj 答案显然满足二分性,先二分一个速度\(v\) 然后显然所有没有点火的都会往中间点火的人方向走,并且如果两个人相遇不会马上点火,要等到火快熄灭的时候才点火,所以这两个人之后应该在一起行动.另外有 ...

  6. loj#2391 「JOISC 2017 Day 1」港口设施

    分析 https://yhx-12243.github.io/OI-transit/records/uoj356%3Bloj2391%3Bac2534.html 代码 #include<bits ...

  7. WC2019 题目集

    最近写的一些 WC2019 上讲的一些题.还是怕忘了,写点东西记录一下. LOJ2983 「WC2019」数树 题意 本题包含三个问题: 问题 0:已知两棵 \(n\) 个节点的树的形态(两棵树的节点 ...

  8. Java,该学什么?

    本人大学学的是生物技术专业,毕业后入坑Java. 最近有人问我是如何转行的,需要学一些什么.我在网上看到一篇帖子,觉得写得很全.如果是我来写,可能还写不了这么全的.在此分享给网友. 2019秋招几个月 ...

  9. 【转】设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成 ...

随机推荐

  1. A*B problem(FFT)

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  2. L118

    The company needs to focus on its biggest clients.This article discussed the events that led to her ...

  3. 3.MySQL优化---单表查询优化的一些小总结(非索引设计)

    整理自互联网.摘要: 接下来这篇是查询优化.其实,大家都知道,查询部分是远远大于增删改的,所以查询优化会花更多篇幅去讲解.本篇会先讲单表查询优化(非索引设计).然后讲多表查询优化.索引优化设计以及库表 ...

  4. 浅学soap--------4

    引入nusoap Service.php //运行该文件,在网页中wsdl点击,可浏览生成的wsdl代码;网页提供注册的方法 <?php require_once ("nusoap/n ...

  5. ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)

    http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...

  6. 洛谷 P1854 花店橱窗布置

    题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识 ...

  7. 设置nodepad++的编码问题

  8. PCM音量控制(高级篇)

    http://blog.jianchihu.net/pcm-volume-control.html 去年写过一篇文章,有关PCM的音量控制:http://blog.jianchihu.net/pcm- ...

  9. 异常:java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlType

    这个是jdK版本的问题的. 本地编译的jar包是1.8的,但是跑jar包的环境jdk版本是1.9的. 升级1.9之后由于jdk当方面的取消了几个jar,所以导致编译起不来. 明天研究一下如何添加jar ...

  10. 设置eclipse中jsp/html文件好看的自动排版

    注:本文转载于ieayoio,原文链接:https://blog.csdn.net/ieayoio/article/details/49930587#8912689 eclipse中jsp文件代码的排 ...