题意
根据给出的电梯停靠序列计算总时间
思路
简单模拟过程
第一次提交
#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;
}