题意
根据给出的电梯停靠序列计算总时间
思路
简单模拟过程
第一次提交
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
int total=0,last=0;
scanf("%d",&n);
vector<int> list(n);
for(int i=0;i<n;i++)
scanf("%d",&list[i]);
for(int i=0;i<n;i++){
if(list[i]>last){
total+=(list[i]-last)*6;
total+=5;
}
else if(list[i]<last){
total+=(last-list[i])*4;
total+=5;
}
last=list[i];
}
printf("%d",total);
return 0;
}
测试点2,3,6不过
估计错误在于,序列中可能有重复的数,就在一层楼停好几个5s,把total+=5
放在if...else if
里面就算不到多停靠的若干个的5s,把total+=5
拎出来,每个楼层输入都算一次就可以AC
第二次提交+AC代码
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
int total=0,last=0;
scanf("%d",&n);
vector<int> list(n);
for(int i=0;i<n;i++)
scanf("%d",&list[i]);
for(int i=0;i<n;i++){
if(list[i]>last){
total+=(list[i]-last)*6;
}
else if(list[i]<last){
total+=(last-list[i])*4;
}
total+=5;
last=list[i];
}
printf("%d",total);
return 0;
}