首先設在整個數組內可以直接到達n+1的最左邊的點點為x

則x+1-n區間都可以一次或2次到達n+1

如果某一個點i可以一次到達n+1,則其i+a[i]大於等於n+1

否則可以先跳到i再跳到n+1,需要2步

然後將右邊界r賦值為x

繼續在區間[1,r-1]找一個可以直接到達x的點y

則區間[y,r-1]中能夠直接跳到r的點需要f[r]步,否則需要f[r]+1步

以此類推

#include<bits/stdc++.h>

using namespace std;

int n,m,a[100010],f[100010],g[100010];

int main(){

scanf("%d%d",&n,&m);

for(int i=1;i<=n;i++)

scanf("%d",&a[i]);

for(int i=1;i<=n;i++){

g[i]=i+a[i];

g[i]=max(g[i-1],g[i]);

}

int r=n+1;

while(r>1){

int l=lower_bound(g+1,g+n+1,r)-g;

while(l+a[l]<r)l++;

for(int i=l;i<r;i++){

if(i+a[i]>=r)f[i]=f[r]+1;

else f[i]=f[r]+2;

}

r=l;

}

for(int i=1;i<=m;i++){

int x;

scanf("%d",&x);

printf("%d ",f[x]);

}

}

jzoj1407的更多相关文章

随机推荐

  1. HTML5新协议介绍 WebSocket

    WebSocket protocol 是HTML5一种新的协议(protocol).它是实现了浏览器与服务器全双工通信(full-duplex). 现在,很多网站为了实现即时通讯(real-time) ...

  2. mysql 执行多线程临时方案

    sqr::IDatabase *db=NULL;IDbConnection *conn = NULL;int main(int argc, char* argv[]) { db = GetDataba ...

  3. qrc转换成py

  4. 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)

    传送门 支持区间加w(i−ql+1)2" role="presentation" style="position: relative;">w(i ...

  5. spring + rs + RocketMQ 【精】

    cxf-rs-rocketmq 项目地址:见git │ pom.xml │ └─src ├─main │ ├─java │ │ └─cn │ │ └─zno │ │ ├─pojo │ │ │ Rece ...

  6. RepositionBars的用法和参数的意义(引用别人的)

    MFC窗口位置管理详细分析及实例 在一般用MFC编写的程序的窗口客户区中,可能有好几个子窗口(具有WM_CHILD风格的窗口).上边是工具栏,中间是视图窗口,下边是状态栏.三个窗 口在框架的客户区里和 ...

  7. 配置使用sourcemap调试vue源码爬坑

    环境: Google Chrome  V72.0.3626.109 vue-dev V 2.6.10 爬坑的乐趣就不说了(我恨啊),以下说一下出坑要点 1. 在vue-dev的package.json ...

  8. Hdu428 漫步校园 2017-01-18 17:43 88人阅读 评论(0) 收藏

    漫步校园 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  9. Hdu2952 Counting Sheep 2017-01-18 14:56 44人阅读 评论(0) 收藏

    Counting Sheep Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Tota ...

  10. 第一章 JVM内存结构

    注意:本系列博客,主要参考自以下四本书 <分布式Java应用:基础与实践><深入理解Java虚拟机(第二版)><深入分析Java web技术内幕><实战jav ...