zoukankan      html  css  js  c++  java
  • vijosP1471 教主的游乐场

    vijosP1471 教主的游乐场

    链接:https://vijos.org/p/1471

    【思路】

       递推。

       首先找到最左边的可以一步跳到后方的L,

       那么L之后的点有两种情况:要么a足以跳到后方步数为1,要么可以一步调到L有L跳到后方步数为2。

       对于L之前的点而言,再进行相同的操作,相当于代码中缩小R为L。

    【代码】

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 
     5 const int maxn = 100000+10;
     6 
     7 int n,q;
     8 int a[maxn],step[maxn];
     9 
    10 inline int read_int(){
    11     char c=getchar();
    12     while(!isdigit(c)) c=getchar();
    13     int x=0;
    14     while(isdigit(c)) {
    15         x=x*10+c-'0';
    16         c=getchar();
    17     }
    18     return x;
    19 }
    20 
    21 int main() {
    22     ios::sync_with_stdio(false);
    23     n=read_int(); q=read_int();
    24     for(int i=1;i<=n;i++) a[i]=read_int();
    25     
    26     int L=1,R=n+1;
    27     step[R]=0;
    28     do{
    29         int i=1;
    30         while(i+a[i]<R) i++;
    31         for(int j=i;j<R;j++)
    32            if(j+a[j]>=R) step[j]=step[R]+1;
    33            else step[j]=step[R]+2;
    34         R=i;
    35     }while(R>1);
    36     int x;
    37     for(int i=1;i<=q;i++) {
    38         x=read_int();
    39         cout<<step[x];
    40         if(i<q) cout<<" ";
    41         else 
    42            cout<<"
    ";
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    ICQ
    Create小程序
    LRU最近最少使用算法
    感知器
    聚类-K均值
    阈值分类法
    最邻近分类
    设计模式
    高级排序算法
    Socket编程
  • 原文地址:https://www.cnblogs.com/lidaxin/p/4904005.html
Copyright © 2011-2022 走看看