At1336 自动机
思路
这道题只要把题目读懂了 这个问题就迎刃而解了
一般情况下 每开一次门 就会增加t秒钟的开门时间
但是呢如果两个人到达时间之差在ts以内的话
则我么可以减少一些时间 因为我们并不需要在第一个人关门之后 在第二次开门
所以我们就只需要加上他们两个之差和那t秒钟就行了****
代码
#include<iostream>
using namespace std;
int n,ans=0,t,timei=0,a;
int main()
{
cin>>n>>t;//输入
for(int i=1;i<=n;i++)
{
cin>>a;//这里其实不需要开数组 输入一下判断一下即可
if(timei>=a)//他们两个电梯相差不超过a
{
int sum1=t-timei+a;//开门时间
ans+=sum1;//答案加上开门时间
timei=timei+sum1;//当前时间也要加上
}
else
{
ans+=t;//这里直接加上t秒钟
timei=a+t;//当前时间也加上t秒钟
}
}
cout<<ans<<endl;//输出ans 记得换行
return 0;//养成返回0的好习惯
}