Codeforces 408D Long Path (DP)

题目:

One day, little Vasya found himself in a maze consisting of (n + 1) rooms, numbered from 1 to (n + 1). Initially, Vasya is at the first room and to get out of the maze, he needs to get to the (n + 1)-th one.

The maze is organized as follows. Each room of the maze has two one-way portals. Let's consider room number i (1 ≤ i ≤ n), someone can use the first portal to move from it to room number (i + 1), also someone can use the second portal to move from it to room number pi, where 1 ≤ pi ≤ i.

In order not to get lost, Vasya decided to act as follows.

  • Each time Vasya enters some room, he paints a cross on its ceiling. Initially, Vasya paints a cross at the ceiling of room 1.
  • Let's assume that Vasya is in room i and has already painted a cross on its ceiling. Then, if the ceiling now contains an odd number of crosses, Vasya uses the second portal (it leads to room pi), otherwise Vasya uses the first portal.

Help Vasya determine the number of times he needs to use portals to get to room (n + 1) in the end.

 

Input

The first line contains integer n (1 ≤ n ≤ 103) — the number of rooms. The second line contains n integers pi (1 ≤ pi ≤ i). Each pi denotes the number of the room, that someone can reach, if he will use the second portal in the i-th room.

 

Output

Print a single number — the number of portal moves the boy needs to go out of the maze. As the number can be rather large, print it modulo 1000000007 (109 + 7).

 

Examples
input
2
1 2
output
4
input
4
1 1 2 3
output
20
input
5
1 1 1 1 1
output
62

题意:
如果当前到达点i的进入次数cnt为奇数 则可以到达p[i]位置 如果是偶数 可以到达i+1位置 求从1走到n+1需要的总步数

思路:
第一次走进i房间的进入次数cnt为1 是奇数 会往后退回p[i]位置 但是此刻p[i]位置的cnt也变成了奇数 因为当时只有为偶数才能向前走 那么会退回到p[p[i]]位置 不断递归
因此 dp[i]记为走到当前位置需要的总步数 状态转移方程为dp[i+1]=dp[i]+1+(dp[i]-dp[p[i]])+1 即为dp[i+1]=2*dp[i]-dp[p[i]]+2

代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const int maxn=1e3+10;
const int mod=1e9+7;
int n;
int p[maxn];
ll dp[maxn];int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&p[i]);}dp[1]=0;for(int i=1;i<=n;i++){dp[i+1]=(2*dp[i]-dp[p[i]]+2+mod)%mod;}printf("%lld\n",(dp[n+1]+mod)%mod);return 0;
}

 

转载于:https://www.cnblogs.com/whdsunny/p/10514150.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习05神经网络--表示

神经网络&#xff1a;表示&#xff08;Neural Networks: Representation&#xff09; 如今的神经网络对于许多应用来说是最先进的技术。 对于现代机器学习应用&#xff0c;它是最有效的技术方法。 神经网络模型是许多逻辑单元按照不同层级组织起来的网络&#xff0c; 每一层…

逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的

逻辑回归(Logistic Regression, LR)又称为逻辑回归分析&#xff0c;是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如&#xff0c;我们可以将购买的概率设置为因变量&#xff0c;将用户的特征属性&#xff0c;例如性别&#xff0c;年龄&#x…

解决SecureCRT无法用非root账号登录ssh

链接失败&#xff0c;提示这个&#xff1a; --------------------------- SecureCRT --------------------------- 连接到会话 192.168.1.100 失败 : The server has disconnected with an error. Server message reads: A protocol error occurred. Change of username or se…

机器学习06神经网络--学习

代价函数 标记方法&#xff1a; 神经网络的训练样本有 m 个 每个包含一组输入 x 和一组输出信号 y L 表示神经网络层数 Sl表示每层的 neuron 个数(SL 表示输出层神经元个数) 将神经网络的分类定义为两种情况&#xff1a; 二类分类&#xff1a;SL1, y0 or 1 表示哪一类&…

Logistic Regression Classifier逻辑回归

Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程&#xff0c;为最大化方程&#xff0c;利用牛顿梯度上升求解方程参数。 优点&#xff1a;计算代价不高&#xff0c;易于理解和实现。缺点&#xff1a;容易欠拟合&#xff0c;分类精度可能不高…

机器学习07应用机器学习的建议

决定下一步做什么&#xff08;Deciding What to Try Next&#xff09; 确保在设计机器学习系统时&#xff0c;能够选择一条最合适、最正确的道路。 具体来讲&#xff0c;将重点关注的问题是&#xff1a;假如你在开发一个机器学习系统&#xff0c;或者想试着改进一个机器学习…

CSS3--5.颜色属性

HTML5中添加了一些新的颜色的表示方式 1.RGBA&#xff1a;说得简单一点就是在RGB的基础上加进了一个通道Alpha。RGBA在RGB的基础上多了控制alpha透明度的参数。以上R、G、B三个参数&#xff0c;正整数值的取值范围为&#xff1a;0 - 255。百分数值的取值范围为&#xff1a;0.0%…

逻辑回归的通俗解释 逻辑回归的定位

1 逻辑回归的定位 首先&#xff0c;逻辑回归是一种分类&#xff08;Classification&#xff09;算法。比如说&#xff1a; 给定一封邮件&#xff0c;判断是不是垃圾邮件给出一个交易明细数据&#xff0c;判断这个交易是否是欺诈交易给出一个肿瘤检查的结果数据&#xff0c;判断…

机器学习08机器学习系统设计

首先要做什么 一个垃圾邮件分类器算法为例&#xff1a; 为了解决这样一个问题&#xff0c;首先要做的决定是如何选择并表达特征向量 x。 可以选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表&#xff0c;根据这些词是否有在邮件中 出现&#xff0c;来获得我们的特…

数学笔记1——导数1(导数的基本概念)

什么是导数导数是高数中的重要概念&#xff0c;被应用于多种学科。从物理意义上讲&#xff0c;导数就是求解变化率的问题&#xff1b;从几何意义上讲&#xff0c;导数就是求函数在某一点上的切线的斜率。我们熟知的速度公式&#xff1a;v s/t&#xff0c;这求解的是平均速度&a…

python接口自动化(四)--接口测试工具介绍(详解)

简介 “工欲善其事必先利其器”&#xff0c;通过前边几篇文章的介绍&#xff0c;大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。 目前&#xff0c;市场上有很多支持接口测试的工具。利用工具进行接口测试&#xff0c;能够提供测试效率。例如&…

机器学习09支持向量机

支持向量机(Support Vector Machines) 在监督学习中&#xff0c;许多学习算法的性能都非常类似&#xff0c;因此&#xff0c;重要的不是你该选择使用学习算法 A 还是学习算法 B&#xff0c;而更重要的是&#xff0c; 应用这些算法时&#xff0c;所创建的大量数据在应用这些算…

数学笔记2

数学笔记2——导数2(求导法则和高阶导数)和、差、积、商求导法则设uu(x),vv(x)都可导&#xff0c;则&#xff1a;(Cu)’ Cu’, C是常数(u v)’ u’ v’(uv)’ u’ v’(u/v)’ (u’v – uv’) / v21、2不解释&#xff0c;下面给出3、4的推导过程乘法法则的推导过乘法法则…

机器学习10聚类

无监督学习 在非监督学习中&#xff0c;我们需要将一系列无标签的训练数据&#xff0c;输入到一个算法中&#xff0c; 然后让它找这个数据的内在结构。 我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集&#xff08;称为簇&#xff09;&am…

python 的笔记

语言&#xff1a;Python IDE&#xff1a;Python.IDE 需求 做出彩虹效果 颜色空间 RGB模型&#xff1a;光的三原色&#xff0c;共同决定色相 HSB/HSV模型&#xff1a;H色彩&#xff0c;S深浅&#xff0c;B饱和度&#xff0c;H决定色相 需要将HSB模型转换为RGB模型 代码示例&am…

关联分析(Association analysis)

关联分析&#xff08;Association analysis&#xff09; 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules&#xff1a;&#xff5b;Diapers&#xff5d;–>{Beer}说明两者之间有很强的关系&#xff0c;购买Diapers的消费者通常会购买Beer。 除…

机器学习11主成分分析

降维(Dimensionality Reduction) &#xff1a; 一、 降维目的&#xff1a; 目的一&#xff1a;数据压缩&#xff08;Data Compression&#xff09; 目的二&#xff1a;数据可视化&#xff08;Visualization&#xff09; 二、 主成分分析&#xff08;PCA&#xff09; 主成分…

使用Apriori进行关联分析(一)

使用Apriori进行关联分析&#xff08;一&#xff09;大型超市有海量交易数据&#xff0c;我们可以通过聚类算法寻找购买相似物品的人群&#xff0c;从而为特定人群提供更具个性化的服务。但是对于超市来讲&#xff0c;更有价值的是如何找出商品的隐藏关联&#xff0c;从而打包促…

主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步&#xff1a;下载数据集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步&#xff1a;改变数据格式。 注&#xff1a;此数据集的各特征值均为像素&#xff0c;即属于同一量纲&#xff0c;故无需归一化步骤。 原格式为&a…

后端视角下的前端框架之Vue.js初探

背景 作为常年搞后端的自己来说&#xff0c;除了多年前学习的一点关于HTML的皮毛&#xff0c;对现在的前端技术栈可谓是一窍不通。但是因为最近在做的内部业务全链路监控系统&#xff0c;负责前端的同事做到一半去搞别的项目了&#xff0c;为了把项目落地不得不硬着头皮学一下前…