AcWing 1480:电梯

【题目来源】
https://www.acwing.com/problem/content/1482/

【题目描述】
我们城市的最高建筑上只有一部电梯。
给定一个由 N 个整数组成的请求列表。
我们要按照列表指定的顺序,将电梯依次停到各个楼层。
已知,电梯上行一层需要 6 秒,下行一层需要 4 秒,每个停留楼层每次停留 5 秒。
请你求出,将列表给出的所有楼层都按指定顺序完成停留共需多少秒。

电梯开始时位于第 0 层,所有楼层均停留完毕后,电梯不用回归原位置。
注意:
可能存在连续在同一楼层停留多次的情况,此时每停留一次就要等待5秒钟。

【输入格式】
共一行,首先包含一个整数 N,然后包含 N 个正数(表示楼层)。

【输出格式】
输出一个整数,表示所花费的总时间。

【数据范围】
1≤N≤100,
列表中的数字不会超过 100。

【输入样例】
3 2 3 1

【输出样例】
41

【算法分析】
● 设用数组 q[] 表示楼层,由于电梯开始时位于第 0 层,故可将数组 q[] 下标从 1 开始。则计算时只需比较 q[i] 与 q[i - 1] 的关系即可。

【算法代码】

#include <bits/stdc++.h>
using namespace std;

const int maxn=1e2+5;
int q[maxn];
int ans;

int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) cin>>q[i];

    for(int i=1; i<=n; i++) {
        if(q[i]>q[i-1]) ans+=(q[i]-q[i-1])*6+5;
        else ans+=(q[i-1]-q[i])*4+5;
    }
    cout<<ans<<endl;

    return 0;
}

/*
in:
3 2 3 1

out:
41
*/



【参考文献】
https://www.acwing.com/solution/content/190564/
https://www.acwing.com/solution/content/11184/





 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值