文章目录

  • 一、题目解读
    • 1、原题
    • 2、分类
    • 3、题意
    • 4、输入输出格式
    • 5、数据范围
  • 二、题解参考
    • 1、总体思路
    • 2、思路①
      • (1).分析
      • (2).AC代码
  • 三、评价与后话
    • 1、评价
    • 2、后话

一、题目解读

1、原题

HDU.1008 Elevator

2、分类

杂题、水题

3、题意

运粮的人开始在第0层,电梯上升一层需要6s、下降一层需要4s、停留运粮需要5s.

给定一个层数列表,需按照上面的顺序进行搬运,计算所需时间。

4、输入输出格式

输入/输出 要求与格式
输入样例个数 通过输入N=0N=0N=0标识输入结束
输入格式(每个样例) 每一行输入一个数NNN,后接NNN个层数aia_iai​(空格隔开)
输出格式(每个样例) 每行输出一个结果

5、数据范围

数据 范围
一切输入ttt 0≤t<1000 \leq t < 1000≤t<100

二、题解参考

1、总体思路

思路 时间复杂度 具体解释
穷举法 O(n)O(n)O(n) 直接模拟电梯按顺序升降,逐层计算

2、思路①

(1).分析

考虑到问题规模NNN很小,直接穷举就OK了。

用一个变量nownownow来存储当前所在层,将下一层和当前层的差d=ai−nowd = a_i - nowd=ai​−now传入内联函数calc计算(或者直接用三目运算符),计算表达式如下:calc(d)={−4d+5d<06d+5d>0calc(d) = \begin{cases} -4 d+5 & d < 0 \\ 6d + 5 & d>0 \end{cases}calc(d)={−4d+56d+5​d<0d>0​

(2).AC代码

HDU(C++/G++)AC代码如下:

#include <iostream>
#include <algorithm>using namespace std;int a[105];
int now, res;inline int calc(int num)
{// 疑惑:是否需要考虑连续两层都是同一层?——从AC的结果来看不用考虑if (num < 0)return -4 * num + 5;return 6 * num + 5;
}int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int n;while (cin >> n, n){for (int i = 0; i < n; ++i)cin >> a[i];now = res = 0;for (int i = 0; i < n; ++i){res += calc(a[i] - now);now = a[i];}cout << res << endl;}return 0;
}

三、评价与后话

1、评价

就是道水题,不烧脑。

2、后话

以后准备将大把精力花在ACM刷题上,fight!

HDU.1008 Elevator相关推荐

  1. HDU 1008 Elevator

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1008 纯水题,就是要注意即使下一站是同一楼层也要停5秒 贴上代码: 1 #include <io ...

  2. PAT甲级1008 Elevator:[C++题解]模拟

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...

  3. 1008. Elevator (20)

    1008. Elevator (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The highest ...

  4. 1008 Elevator (20 分)_13行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 The highest building in our city has only one elevator. A request ...

  5. 1008 Elevator

    思路如下:用一个整型数组存楼层,0号元素为0(开始停在0层),每读入一个元素,和上一个比较,更大说明是上升,总时长加上楼层差*6,反之说明是下降,总时长加上楼层差*4.最后再管停留时间,也就是所有元素 ...

  6. 【PAT (Advanced Level) Practice】1008 Elevator (20 分)

    #include<iostream> #include<cstdio> #include<cstdlib> #include<string> #incl ...

  7. 1008 Elevator (20 分)【难度: 简单 / 知识点: 模拟】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805511923286016 直接模拟即可. #include<bi ...

  8. 【PAT甲级 sc.nextInt()的使用】1008 Elevator (20 分) Java版 9/9通过

    题目 这题已经给了电梯到达每一层的顺序,不需要自己调度电梯. 是个水题. 坑 & 心得 测试用例1 51 88 35 28 15 62 61 78 89 36 58 95 95 28 94 3 ...

  9. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

最新文章

  1. hive 表的常用操作
  2. 命令行参数 - 和 -- 的区别
  3. 链家秋招内推编程笔试题目
  4. mysql两者之间_sql between 语法与查询两者之间数据方法
  5. 科大星云诗社动态20210414
  6. Linux 下搭建Apache,Linux 下搭建Apache 服务器
  7. PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
  8. VR创投寻鹰会,一场深圳VR行业人的大聚会
  9. FPGA学习之verilog语言入门指导
  10. 前端学习(2539):节点类型
  11. Cloud一分钟 |2018天猫双11结果出炉:2135亿;工信部透露:6G概念研究也在今年启动;英特尔39款至强新处理器曝光...
  12. truffle serve 发生异常解决办法
  13. NotificationManager滑动不退出_退出支付宝的相互宝大病互助计划居然需要8个步骤!...
  14. 工作记录 反射
  15. GD32F303 移植 FreeRTOS
  16. 【FastDFS-V5.11】Linux下FastDFS+Nginx实现分布式图片服务器搭建详细教程(单机模式)
  17. 微信公众号群发接口和原创校验
  18. 神经网络学习的几种方法
  19. 凯叔讲故事显示未能连接到服务器,凯叔讲故事(免费收听)
  20. (webapp)微信和safri 对于html5 部分功能不兼容,多选或单选下拉框去除边框无效果。...

热门文章

  1. 数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制
  2. c语言220程序,电赛必备220个C语言实例源码分享
  3. oracle mysql安装图解 linux_Linux上Oracle 11g安装步骤图文详解
  4. cmd mysql出现乱码怎么解决方法_cmd如何解决mysql乱码
  5. sqlserver 分组合并列_【双11秒杀】帕克96分阿根廷一级名庄鼎尖单一园马尔贝克...
  6. hibernate 查询id为空懒加载_hibernate 查询时指定查询字段、级联表的一种方式
  7. android的多行文本框的值,Swift - 多行文本输入框(UITextView)
  8. Python装饰器几个有用又好玩的例子
  9. ThreadLocal类学习笔记
  10. 获取北京时间授时api stm32 esp8266获取北京时间、年月日、星期api GMT格林威时间转换北京时间