zoukankan      html  css  js  c++  java
  • B Long Path

    有n+1个房间。从1-n个房间。每个房间有两扇门。一扇去i+1的房间另一扇去编号为pi的房间。

    起点为1,终点为n+1,对应第i个各点,如果我奇数次到达,那么下一步走到a【i】的位子,如果是偶数次到达,那么下一步走到a【i】+1的位子。问到达n+1的房间至少要走多少次

    解析:

    f(i,0)代表第一次到第i号房间所用步数,f(i,1)代表第二次到达房间所用步数

    sum[i]:f[i][1]-f[i][0]的前缀和

        sdf(n);
        For(i, 1, n)
            sdf(a[i]);
        f[1][0] = 0;
        f[1][1] = 1;
        sum[1] = 1;
        For(i, 2, n)
        {
            f[i][0] = (f[i - 1][1] + 1)%mod;
            f[i][1] = ((f[i][0] + sum[i - 1]+mod)%mod - sum[a[i] - 1] + i - a[i] + 1+mod)%mod;
            sum[i] = (sum[i - 1] + f[i][1] - f[i][0]+mod)%mod;
            // cout <<i<<":"<< f[i][0] << " " << f[i][1] <<" "<<sum[i]<< endl;
        }
        ans = (f[n][1] + 1+mod)%mod;
        cout << ans;
  • 相关阅读:
    CSS 中 Position relative 和 absolute区别
    感受到LDT的好处
    Map数据结构
    break和continue
    vue的ref属性
    css小样式
    搭建vue开发环境
    setTimeout和clearTimeout
    垂直居中
    vertical-align 属性
  • 原文地址:https://www.cnblogs.com/planche/p/9456640.html
Copyright © 2011-2022 走看看