2022.02.22 - NC005.ZJ1 附加题

本文解析了一种使用动态规划解决的问题,即找到从数组起始位置到达每个下标所需的最少步数,通过递推公式展示了如何更新状态并实现高效计算。代码实例演示了如何计算从0开始到达数组中每个位置的最少步数模1e9+7的结果。
摘要由CSDN通过智能技术生成

1. 题目

在这里插入图片描述

2. 思路

(1) 动态规划

  • dp[i]表示第一次到达下标i所用的步数,初始化时,dp[0]=0。
  • 第一次到达下标i时,必然是从下标i-1前进1步,而从下标i-1前进1步的条件是偶数次到达下标i-1,依次类推,从下标i-1向下标i前进时,之前的下标到达次数均是偶数。
  • 第一次到达下标i-1后,必然会向前回退到next[i-1],此时步数累计为dp[i-1]+1,并且使得到达next[i-1]的次数变成奇数,而从下标next[i-1]再次转移到i-1,需要的步数是dp[i-1]-dp[next[i-1]],此时是第二次到达下标i-1,再向前移动1步即可到达下标i。
  • 因此,dp[i]=dp[i-1]+1+dp[i-1]-dp[next[i-1]]+1。

3. 代码

import java.util.Scanner;

public class Main {
    public static int MOD = 1000000007;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] next = new int[n];
        for (int i = 0; i < n; i++) {
            next[i] = scanner.nextInt() - 1;
        }
        int[] dp = new int[n + 1];
        dp[0] = 0;
        for (int i = 1; i <= n; i++) {
            dp[i] = (dp[i - 1] + 1 + dp[i - 1] - dp[next[i - 1]] + 1) % MOD;
        }
        System.out.println(dp[n] < 0 ? dp[n] + MOD : dp[n]);
    }
}
NotADirectoryError: [WinError 267] 目录名称无效。是Python中的一个错误,表示指定的路径不是有效的目录。 在你提供的例子中,出现了NotADirectoryError: [WinError 267] 目录名称无效。: 'D:\\tms\\GNSS-R\\tables\\cyg01.ddmi.s20230717-000000-e20230717-235959.l1.power-brcs.a31.d32.nc' 错误。这个错误的意思是路径'D:\\tms\\GNSS-R\\tables\\cyg01.ddmi.s20230717-000000-e20230717-235959.l1.power-brcs.a31.d32.nc'不是一个有效的目录。 通常情况下,当我们在代码中使用一个路径作为目录去操作的时候,如果这个路径不是一个有效的目录,就会出现NotADirectoryError: [WinError 267] 目录名称无效。错误。所以在使用路径作为目录操作之前,需要确保这个路径是一个有效的目录。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [NotADirectoryError: [WinError 267] 目录名称无效。: ‘123456.txt](https://blog.csdn.net/weixin_42942135/article/details/113904212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Selenium WebDriver测试 NotADirectoryError: [WinError 267] 目录名称无效。](https://download.csdn.net/download/weixin_38637884/13741116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值