1008 Elevator (20 分)
题目链接
算法分析
首先读懂题目的意思,它给定N个正数(有给定的顺序),让我们去模拟这个电梯上下运行的过程,然后输出其总运行时间。
测试点
我第一次错的测试点2,3,6
原因在于: 相邻两个数相同的情况——移动时间为0,停留时间增加5s
代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d", &n);
int now = 0, tot = 0, x;
for(int i = 1; i <= n; ++ i){
scanf("%d", &x);
if(x < now) tot += (now - x) * 4 + 5;
else if(x >= now) tot += (x - now) * 6 + 5;
now = x;
}
printf("%d", tot);
return 0;
}
学习柳诺
代码思路基本一致,柳诺的方法更节省空间
代码如下
#include <iostream>
using namespace std;
int main() {
int a, now = 0, sum = 0;
cin >> a;
while(cin >> a) {
if(a > now)
sum = sum + 6 * (a - now);
else
sum = sum + 4 * (now - a);
now = a;
sum += 5;
}
cout << sum;
return 0;
}