当前位置: 代码迷 >> 综合 >> 我的笔记之A1008 Elevator (20分)
  详细解决方案

我的笔记之A1008 Elevator (20分)

热度:52   发布时间:2024-02-07 21:20:27.0

题意

根据给出的电梯停靠序列计算总时间

思路

简单模拟过程

第一次提交

#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;
}