当前位置: 首页 > news >正文

PAT 甲级题目讲解:1008《Elevator》

✅ PAT 甲级题目讲解:1008《Elevator》

–B站讲解视频:火烤小布丁-PAT 甲级题目讲解
–讲义 GitHub 地址 持续免费更新中…
祝大家刷题顺利,愉快学算法!有问题建议也欢迎留言~
感谢点赞收藏,欢迎关注支持

🧩 题目简介

本题模拟的是一个城市中只有一台电梯,它根据乘客的请求依次停靠多个楼层。电梯从 0 层出发,按照给定的楼层顺序依次访问目标楼层。

电梯移动规则如下:

  • 每上升一层楼耗时 6 秒
  • 每下降一层楼耗时 4 秒
  • 每次到达一个目标楼层,都会 停留 5 秒
  • 初始位置固定为 第 0 层,最终不需返回。

🧪 样例分析

输入样例:

3 2 3 1

含义:

  • 请求数量:3 次;
  • 依次前往楼层:2 → 3 → 1;
  • 初始楼层为 0;

模拟过程如下:

  1. 从 0 → 2:上升 2 层,耗时 2×6=122 \times 6 = 122×6=12 秒 + 停留 5 秒;
  2. 从 2 → 3:上升 1 层,耗时 666 秒 + 停留 5 秒;
  3. 从 3 → 1:下降 2 层,耗时 2×4=82 \times 4 = 82×4=8 秒 + 停留 5 秒;

总时间为:

12+5+6+5+8+5=4112 + 5 + 6 + 5 + 8 + 5 = 41 12+5+6+5+8+5=41

输出:

41

🔍 解题思路

📌 电梯行为模拟 + 简单加法累加

本题是典型的“按规则模拟过程”的题目,只需逐步累加时间开销即可。


📎 变量说明

变量名含义
n请求次数(要访问的楼层个数)
t当前请求楼层
s总时间累计值
p当前电梯所在楼层(初始为 0)

✅ Step 1:读入数据与初始化

cin >> n;
p = 0; // 初始电梯位置为 0 层

✅ Step 2:逐个处理请求楼层

while(n--){cin >> t;if(t > p){s += (t - p) * 6; // 上升}else if(t < p){s += (p - t) * 4; // 下降}s += 5; // 到达后停留 5 秒p = t;  // 更新当前位置
}

✅ Step 3:输出结果

cout << s;

✅ 完整代码

#include <bits/stdc++.h>
using namespace std;int n, t, s, p;int main(){cin >> n;p = 0; // 初始在 0 层while(n--){cin >> t;if(t > p){s += (t - p) * 6;}else if(t < p){s += (p - t) * 4;}s += 5; // 每到一层需停留 5 秒p = t;  // 更新电梯当前位置}cout << s;return 0;
}

🚧 常见错误提醒

错误类型错误表现
忘记初始化楼层位置忘记设置起始楼层为 0,导致初始偏移错误
停留时间未加每次到达目标楼层都需 +5 秒
上升/下降耗时搞反上升应乘 6,下降应乘 4,不能写错
忘记更新当前楼层 p每次处理完时间计算要更新当前楼层 p 为本次需到达的 t

✅ 总结归纳

  • 本题为电梯规则模拟题,不涉及算法难度,关键是认真理解题意模拟;
  • 逐层判断电梯上升或下降,并累加相应时间;
  • 注意初始化当前楼层为 0,过程中要逐次更新所在楼层数,最终只需输出总耗时。

⏱️ 复杂度分析

  • 时间复杂度:O(n)\mathcal{O}(n)O(n)(一次遍历楼层请求)
  • 空间复杂度:O(1)\mathcal{O}(1)O(1)(仅使用常数变量)

🧠 思维拓展

  • 如果电梯支持同时处理多个请求(非顺序),如何最优调度?
  • 若加上“不同乘客等待时间”的优化目标,会变成经典的调度算法问题;
  • 本题思想可类比:打印任务队列、线程任务模拟、电梯调度系统设计等场景。
http://www.dtcms.com/a/297166.html

相关文章:

  • Agent领域,近年来的前沿研究方向:多智能体协作、认知启发架构、伦理安全、边缘计算集成
  • Modbus RTU转Profinet网关与涡街液体流量计:工业自动化数据传输的完美协同
  • 【橘子分布式】gRPC(番外篇-拦截器)
  • 关闭chrome自带的跨域限制,简化本地开发
  • XORIndex:朝鲜不断发展的供应链恶意软件再次瞄准 npm 生态系统
  • 《基于电阻抗断层扫描(EIT)驱动的肌肉骨骼模型表征人体手臂动态意图用于人机交互》论文解读
  • Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads
  • chrome使用Modheader插件让浏览器直接预览图片,不下载
  • 算法思维进阶 力扣 62.不同路径 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • kafka如何保证数据不丢失
  • 机器学习中knn的详细知识点
  • Linux725 磁盘阵列RAID0 RAID1
  • OneCode3.0 Gallery 组件前后端映射机制:从注解配置到前端渲染的完整链路
  • 应用代码解释
  • 从零开始的云计算生活——番外6,使用zabbix对中间件监控
  • pycharm安装教程-PyCharm2023安装详细步骤【MAC版】【安装包自取】
  • Spring 策略模式实现
  • 配置Mac/Linux终端启动执行脚本
  • 电子电子架构 --- 软件项目的开端:裁剪
  • 现代 C++ 开发工作流(VSCode / Cursor)
  • ubuntu/centos系统ping 不通域名的解决方案
  • 清理DNS缓存
  • Ubuntu 环境下创建并启动一个 MediaMTX 的 systemd 服务
  • 缓存HDC内容用于后续Direct2D绘制.
  • 数据仓库深度探索系列 | 开篇:开启数仓建设新征程
  • 验证回文串-leetcode
  • Nginx简单介绍
  • 【STM32】Keil + FreeRTOS + HAL DMA + UART 空闲中断 接收异常
  • 【矩阵专题】Leetcode48.旋转图像(Hot100)
  • leetcode_122 买卖股票的最佳时机II