zoukankan      html  css  js  c++  java
  • P2800

    P2800 又上锁妖塔

    考虑 dp

    dp[i] 表示到达第 i 层最少使用的时间。

    通过样例可知,是在第 0 层在往上跳的,最终跳到 n + 1 层的位置。。

    那么 dp[i - 3] 表示在 i - 3 层位置使用了仙术跳到第 i - 1 层,再爬一层的楼.

    dp[i - 2] 表示在 i - 2 层位置使用了仙术跳到第 i - 1 层,再爬一层的楼.

    dp[i - 1] i - 1 是不会使用仙术的,因为若使用了仙术会跳到 i + 1i + 2 层。不用仙术,那么 i 层就可以使用仙术,不用仙术的话就只能爬楼了.

    int dp[N];
    int a[N];
    int main()
    {
        int n;
        cin >> n;
        rep(i, n) cin >> a[i];
        if (n == 1 || n == 2)
        {
            cout << 0 << endl;
            return 0;
        }
        memset(dp, 0x3f, sizeof dp);
        dp[0] = 0;
        for (int i = 1; i <= n + 1; i++)
        {
            if (i >= 3)
                dp[i] = min(dp[i], dp[i - 3] + a[i]);
            if (i >= 2)
                dp[i] = min(dp[i], dp[i - 2] + a[i]);
            if (i >= 1)
                dp[i] = min(dp[i], dp[i - 1] + a[i]);
        }
        cout << dp[n + 1] << endl;
        return 0;
    }
    
  • 相关阅读:
    echarts使用
    Nutch插件系统
    linux命令总结
    linux命令行快捷键
    每日一笔
    Hadoop参数调优
    rsync用于同步目录
    hadoop遇到的问题(汇总)
    linux历史命令
    hadoop 编译代码及运行
  • 原文地址:https://www.cnblogs.com/strategist-614/p/12617039.html
Copyright © 2011-2022 走看看