走房间

题目网址:http://codeforces.com/problemset/problem/407/B

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 pidenotes 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).

Sample Input

Input

21 2

Output

4

Input

41 1 2 3

Output

20

Input

51 1 1 1 1

Output

62

思路:开辟一个数组q[],q[i]表示从第i个房间的第二个门走到p[i]房间然后回到i房间的路程
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;
int p[1005];
int q[1005];

int main()
{
    int n,i,j;
    long long sum,sum1;
    while(cin>>n)
    {
        sum=2;
        memset(q,0,sizeof(q));
        for(i=1;i<=n;i++)
        cin>>p[i];
        q[1]=2;
        for(i=2;i<=n;i++)
        {
            sum1=0;
            if(p[i]<i)
            {
               for(j=p[i];j<i;j++)
               {
                   sum1+=q[j];
               }
               sum1=sum1+2;
               if(sum1>=1000000007)
               sum1=sum1%1000000007;
               q[i]=sum1;
               sum+=sum1;
            }
            else
            {
                q[i]=2;
                sum=sum+2;
            }
            if(sum>=1000000007)
            sum=sum%1000000007;
        }
        cout<<sum<<endl;
    }
    return 0;
}
时间: 2024-10-12 10:58:06

走房间的相关文章

hdu 4305 概率dp

1 /* 2 题目大意:有n个房间由n-1个隧道连接起来,从1号房间开始, 3 每个节点i都有三种可能: 4 1.被杀死,回到节点1,概率为ki; 5 2.找到出口,离开迷宫,概率ei; 6 3.与它相连的有m个房间,到任意相连房间的概率(1-ki-ei)/m; 7 求走出迷宫要走房间个数的期望. 8 E[i]表示在节点i处的期望值,E[1]即为答案,从后往前推. 9 E[1]=k1*E[1]+sigma(E[j])*(1-k1-e1)/childsize[i]+(1-k1-e1) 10 非叶子

2015互联网校招总结—一路走来 (移动端开发面经,另有面经汇总)

转载请注明出处:http://blog.csdn.net/ns_code/article/details/40408397 写在前面 结束了在百度的实习,是时候写下校招的总结了,再不写估计很多东西都忘了.在开源社区混迹久了,从别人的学习.求职.工作经历中越发感受到很多的正能量, 也本着攒RP的原则,向学弟学妹们,尤其非名校的学弟学妹们传递点正能量,因为博主也是非名校出身,而且在整个求职的过程中能够很明显地感受到名校学生那 种得天独厚的优势,同样的实力,名校学生进入BAT等一线互联网企业确实要容易

[haoi2014]走出金字塔

在探险的过程中,考古学家Dr. Kong 无意地被困在一个金字塔中.金字塔中的每个房间都是三角形.Dr. Kong可以破壁走到相邻的房间去. 例如,如果他目前处于三角形(2,2)房间,那么他可以破壁走到三角形(2,1).(2,3)或(1,1)房间.但破壁一面墙需要花费K分钟时间,而考古学家Dr. Kong 的体能只能支持他到S分钟.好在Dr. Kong手中有这个金字塔地图,他发现金字塔有许多出口,一旦他进入一个有出口的三角形房间,他再用1分钟就可以走出金字塔.现在,你能否帮助Dr. Kong找到

《总有一个人要先走》

(一)命运的河流轻轻拐弯 爸爸查出肺癌那天,是我在成年后第一次痛哭,我的妻子小季也哭得无法自抑,妈妈却没有表现出过度伤心.她只是怔了好久,悄悄抹掉了眼角的一点泪花. 爸爸也很冷静.在详细咨询了医生,得知接受化疗的过程和结果后,他独自在房间里呆了一天,出来吃晚饭的时候宣布,他拒绝冶疗.在我和小季的劝说和反对声中,妈妈始终沉默着,只是一声不响地往爸爸碗里夹了几筷子菜. 爸爸有自己的医保,冶疗费用摊下来,家里要负担一部分,但也是家庭经济实力允许的范围内,并不会造成困窘.但爸爸坚持不冶疗.他说,他的人生

2015互联网校招总结—一路走来

转载请注明出处:http://blog.csdn.net/ns_code/article/details/40408397 写在前面 结束了在百度的实习,是时候写下校招的总结了,再不写估计很多东西都忘了.在开源社区混迹久了,从别人的学习.求职.工作经历中越发感受到很多的正能量,也本着攒RP的原则,向学弟学妹们,尤其非名校的学弟学妹们传递点正能量,因为博主也是非名校出身,而且在整个求职的过程中能够很明显地感受到名校学生那种得天独厚的优势,同样的实力,名校学生进入BAT等一线互联网企业确实要容易很多

【HAOI2014】走出金字塔

神奇-- 原题: 在探险的过程中,考古学家Dr. Kong 无意地被困在一个金字塔中.金字塔中的每个房间都是三角形.Dr. Kong可以破壁走到相邻的房间去. 例如,如果他目前处于三角形(2,2)房间,那么他可以破壁走到三角形(2,1).(2,3)或(1,1)房间.但破壁一面墙需要花费K分钟时间,而考古学家Dr. Kong 的体能只能支持他到S分钟.好在Dr. Kong手中有这个金字塔地图,他发现金字塔有许多出口,一旦他进入一个有出口的三角形房间,他再用1分钟就可以走出金字塔.现在,你能否帮助D

《网管员世界》记者走机场采访实录

记者走基层采访提纲   1.毕业后从事的第一份工作是涉及哪个领域的?从事如今的运维工作已有多少年? 答:当年读书条件差,也没有正确的学习方法,尽管十分努力,依然没有考上大学的希望.就读了一个纺织学校的缫丝专业,一年半以后,就回老家缫丝厂做机修工去了,是定向委培那种.干了不到2年,国营缫丝厂经营艰危,于是被待待岗处理,从此为了谋生而远走他乡.1999年南下广州,因为在工厂维修的缘故,拧螺丝比一般人快,因此有幸谋得一份维修MO及光盘刻录机的工作,算是跟IT沾上边了吧!一年后,北上帝都,继续从事刻录机

女子坐月子时被禁止玩手机 抓狂想带孩子“走”p1

负责与暴乱囚犯谈判的法官路易斯·卡洛斯·瓦卢瓦坦言:"我此生从未见过如此惨状,到处都是血和尸首."亚马孙州公共安全厅长塞尔吉奥·丰特斯证实,许多死者被发现时尸体已被斩首. 文化的传播有两个途径,一个是战争,另一个是商贸.罗马人用武力强占他国领土,纳为自己的行省,并将价值观和审美取向强加给行省.因而,罗马化也是一种文化侵略,对当地文化形成了压制或灭绝. 罗马人深受希腊文化的影响,包括希腊的城邦文化.罗马人认为居无定所,是野蛮人的生活方式,在城市中生活的人才是文明人.城市生活是罗马文明的重

OSChina 周四乱弹 —— 假期综合症走起

该来的还是来了,心塞!一想到要上班俺就难受,只好去看医生了 去看心理医生,我对他说:"医生,最近我老是控制不了自己的情绪,容易暴躁,我该怎么办?"他看了看我:"嗯,...具体有什么症状?""cao你妈,关你什么事!"我上去踹他一脚,转身走了! 动弹上很多人都在问,程序猿们接下来又要开始度日如年地搬砖,该怎么办 @独孤青冥:假期余额已不足,请问如何充值??? @黑黑的脚后跟:明天就上班了,可是我得了懒癌,谁能救我 开源中国首席骨科主任:想到明天要上