jzoj1407
首先設在整個數組內可以直接到達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的更多相关文章
随机推荐
- socket编程介绍
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...
- 768A Oath of the Night's Watch
A. Oath of the Night's Watch time limit per test 2 seconds memory limit per test 256 megabytes input ...
- python的代码检查
#!/bin/python3.4# coding=utf-8 class lexicon(object): # direction = ['north', 'south', 'east', 'west ...
- [SoapUI] 配置默认环境的properties
<Envs> <Env id="Live,Default environment"> <Project> <CusProperty nam ...
- part1:8-远程登录Linux
Linux远程登录 Linux系统中是通过ssh服务实现的远程登录功能.默认ssh服务开启了22端口,而且在安装完成系统时,这个服务已经安装,并且是开机启动的.所以不需要额外配置就能直接远程登录Lin ...
- 633. Sum of Square Numbers
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- win 控制台工作路径切换
1.如果是同磁盘 直接cd 列如cd C:\mysql\bin 2.如果不是同一磁盘 则要2.1 d: 操作 2.2 cd D:\Software\xampp\address\mysql\bin ps ...
- 使用ntpdate校正linux系统的时间
当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间. 安装:yum install ntpdate ntpdate简单用法: # ntpdate ip # ntpdate 210 ...
- IoC的基本概念
一.什么是IOC ioc是一个英文缩写,英文全称是 Inversion of Control,翻译过来是“控制反转”.理解好Ioc的关键是要明确“谁控制谁,控制了什么,为何是反转,哪些方面反转了” 谁 ...
- 20155320 2016-2017-2 《Java程序设计》第五周学习总结
20155320 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 错误处理 java中所有错误都会被打包为对象,可以通过try catch 代表错误的对象后做 ...