• 秘密行动


    问题描述
      小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。
    输入格式
      第一行包含一个整数n,代表楼的高度。

      接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。
    输出格式
      输出1行,包含一个整数,表示所需的最短时间。
    样例输入
    5
    3
    5
    1
    8
    4
    样例输出
    1
    数据规模和约定
      对20%的数据,n<=10
      对40%的数据,n<=100
      对60%的数据,n<=5000
      对100%的数据,n<=10000

    #include<iostream>
    #include<cstring>
    
    #define min(a, b, c) min(min(a, b), c)
    
    using namespace std;
    
    const int N = 10010;
    
    int w[N];
    int f[N][3];
    int n;
    
    int main(){
        memset(f, 0x3f, sizeof f);
        
        cin >> n;
        
        for(int i = 1; i <= n; i ++) cin >> w[i]; // 一共n + 1个楼板
        
        f[n + 1][0] = f[n + 1][1] = f[n + 1][2] = 0;
        
        for(int i = n; i >= 0; i --){
            int a = f[i + 1][0], b = f[i + 1][1], c = f[i + 1][2], d = f[i + 2][0];
            f[i][0] = w[i + 1] + min(a, b, c);
            f[i][1] = f[i + 1][0];
            f[i][2] = f[i + 2][0];
        }
        
        cout << min(f[0][0], f[0][1], f[0][2]);
        
        return 0;
    }
    
  • 相关阅读:
    大数据基础---Spark累加器与广播变量
    大数据基础---Spark部署模式与作业提交
    大数据基础---Spark_Transformation和Action算子
    大数据基础---Spark_RDD
    大数据基础---Spark开发环境搭建
    大数据基础---Spark简介
    利用numpy 计算信息量
    三调地类分级字典
    省/直辖市行政区代码表
    设置 Jupyter notebook 运行的浏览器
  • 原文地址:https://www.cnblogs.com/tomori/p/13667694.html
Copyright © 2020-2023  润新知