At1336

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的好习惯
}

求通过QwQ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值