首页 > 其他分享 >6194: jump and jump 深搜/广搜/动态规划

6194: jump and jump 深搜/广搜/动态规划

时间:2023-07-16 12:11:05浏览次数:39  
标签:6194 格子 int 跳到 jump 输入 动态 起点

描述

 

 

寒假在家里无聊极了,小w看到地上的瓷砖,想出了一个游戏。这个游戏是这样子的,一共有n个格子,刚开始在起点的时候可以跳到第1个到第k个格子中的一个上面,之后在每个格子上只能向前跳相对应的长度。请问至少需要多少步可以恰好跳到最后一个格子呢?

输入

 

 

第一行输入两个整数n和k(1<=n<=100000,1<=k<=n)。

第二行输入n个整数,第i个整数代表在第i个格子上能跳跃的长度(0<=a[i]<=100000)。

 

 

输出

 

 

输出能跳到第n个格子的最少步数。如果无法到达,输出-1。

 

 

样例输入

 

7 3
4 2 5 1 2 1 1

样例输出

 3

提示

 

在起点跳到第1个位置,1->5->7

在起点跳到第2个位置,2->4->5->7

在起点跳到第3个位置:3->8

 

这题太牛逼了,简直是深搜、广搜、动态规划教学题

动态规划解法

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10,inf = 0x3f3f3f3f;
int n,k;
int a[N],f[N];
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    memset(f,inf,sizeof(f));
    for(int i=1;i<=k;i++)f[i] = 1;
    for(int i=1;i<=n;i++)
    {
        int x = a[i]+i;
        if(x<=n)
        {
            f[x] = min(f[x],f[i]+1);
        }
    }
    if(f[n]==inf)cout<<"-1";
    else cout<<f[n];
     return 0;
}

 

标签:6194,格子,int,跳到,jump,输入,动态,起点
From: https://www.cnblogs.com/jyssh/p/17557667.html

相关文章

  • .NET Native AOT的静态库与动态库
    .NET不仅可以使用C静态库与动态库,也可以将.NET实现的函数导出为C静态库与动态库。在没有NativeAot之前,.NET只能通过P/Invoke享受C/C++生态,而在NativeAot之后,不仅可以享受这些生态,还可以开发SDK供其他语言调用。.NETNativeAOT的NativeLib参数用于指定本机库的类型。在.NET7......
  • 关于AWS-阿里-堡垒机Console界面-登录-多因子MFA-认证的动态口令生成的python实现
    对于很多公司来说、都会要求在登录云平台,如AWS云,阿里云,或者堡垒机Console,甚至操作系统时,都会要求登录时,进行二次认证也即是多因素,多因子,MFA认证,关于多因素认证、一般有短信验证码,软件生成code,或者邮件接收Code,都可以实现今天笔者主要讲述,如何通过python代码进行实现,AWS,阿里云、......
  • 集装箱多式联运——动态规划
    物流运输方式由公路、铁路、水路、空运及管道等5种方式组成,5种运输方式在技术上、经济上各有长短,都有适宜的使用范围,每种运输方式单独运用很难实现节约资源、降本增效。随着我国经济不断发展以及布局网络技术的不断深化,多式联运通过把传统的、单一的运输方式进行择优组合,充分利......
  • 67.requireJS的核心原理是什么(如何动态加载的如何避免多次加载的如何缓存的)
    67.requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)require.js的核心原理是通过动态创建script脚本来异步引入模块,然后对每个脚本的load事件进行监听,如果每个脚本都加载完成了,再调用回调函数。详细资料可以参考:《requireJS的用法和原理分析》......
  • [USACO23OPEN] Field Day S 田野日 - 动态规划
    提供一个简单的DP思路。##0x01重点信息可以先找出题目中的一些重点信息。-字符串中只有$G$与$H$。-$N$很大($2\leqN\leq10^5$),但$C$很小($1\leqC\leq18$)。##0x02思路既然字符串中只有$G$与$H$,我们不妨将字符串转化为二进制数字(如$1$代表$G$,$0$代......
  • 反射与动态导入
    1.创建如下结构目录以及python文件 2.现在在app.py就可以import 通过字符串导入模块 通过字符串导入模块,再通过getattr拿到成员 通过注册的底层源码分析 最后返回的就是(app里的url,None,None) 最终形态 ......
  • 动态DP
    题目链接题目大意:动态维护树上最大权独立集。所谓动态DP,就是把原先能用DP解决的问题变成动态维护DP值。如果DP数组可以支持合并两条链的话,可以直接用线段树维护,否则需要考虑把DP的转移改成矩阵,这样就可以用线段树维护矩阵,不过支持合并链以及维护矩阵都需要树链剖分,所以......
  • 45. 动态规划
    一、什么是动态规划  动态规划(DynamicPorogramming)是算法的核心是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。动态规划与分治算法类似,不同的是,适用于动态规划求解的问题,经分解得到子问题往往不是互相独立的,即下一个子阶段的求解是建立在上一个子阶段的基础......
  • 2023-07-13 【动态规划】爬楼梯
    题目链接:爬楼梯详细:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1阶+1阶2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1阶......
  • 动态规划DP入门笔记
    动态规划以斐波那契数列为例:\(f_i\)状态\(f_i=f_{i-1}+f_{i-2}\)转移方程\(f_0=0\),\(f_1=1\)初始化dp的实现方法一般有三种,其中的两种(最重要的)如下#include<bits/stdc++.h>usingnamespacestd;intf[200010];signedmain(){ intn; scanf("%d",&n);......