PS:萌新刷题时的代码,基本没有改过,测试点都通过了。放上来总结一下思路与方法。
1.题目阐述
给定上下电梯时间以及停止时间,根据需求计算电梯任务完成时间。
2.题目思路
设定当前层数,然后根据题意直接模拟计算即可。需要注意的是可能出现如“3 3”这种连续停滞在同一层的情况,这也需要相应多加停滞时间(好像不太合理,但题目就是这样)
3.题解代码
我的代码如下:
#include<cstdio>
const int maxn = 1001;
int cur_floor;
long long e_time;
int floor_list[maxn];
int N;
int u_c = 6, d_c = 4, s_c = 5;
void Test1008(){
freopen("C://Users/ShuKino/Desktop/LearningData/A1008.txt", "r", stdin);
scanf("%d", &N);
for (int i = 0; i < N; i++){
scanf("%d", &floor_list[i]);
}
cur_floor = 0;
int cost = 0;
for (int i = 0; i < N; i++){
int goal_floor = floor_list[i];
if (cur_floor > goal_floor){
cost += d_c*(cur_floor - goal_floor);
cur_floor = goal_floor;
}
else if (cur_floor < goal_floor){
cost += u_c*(goal_floor - cur_floor);
cur_floor = goal_floor;
}
cost += s_c; //好吧,同楼也要多停不合理,算了~
}
printf("%d\n", cost);
}
int main(){
Test1008();
getchar();
return 0;
}