CF1304C Air Conditioner 题解

description:

  • 一个餐馆中有个空调,每分钟可以选择上调 1 1 1 个单位的温度或下调 1 1 1 个单位的温度,当然你也可以选择不变,初始的温度为 m m m

  • n n n 个食客,每个食客会在 t i t_i ti 时间点到达,他所能适应的最低温度是 l i l_i li ,最高温度是 h i h_i hi ,他只会在 t i t_i ti 时刻逗留。

  • 如果温度不在食客的适应范围内,他就会不舒服,请你判断,空调能否使得 n n n 位来就餐的食客都感到舒服。

  • 本题多组数据,数据组数不大于 500 500 500

  • 1 ≤ n ≤ 100 1\le n\le 100 1n100 − 1 0 9 ≤ m , l i , h i ≤ 1 0 9 -10^9\le m,l_i,h_i\le 10^9 109m,li,hi109 1 ≤ t i ≤ 1 0 9 1\le t_i\le 10^9 1ti109

  • translate by @ShineEternal

solution:

设刚开始的区间为 [ t m p l , t m p r ] [tmpl,tmpr] [tmpl,tmpr]

其中 t m p l = t m p r = m tmpl=tmpr=m tmpl=tmpr=m

那么每次我们能调节到的温度区间为 [ t m p l − Δ t , t m p r + Δ t ] [tmpl-\Delta t,tmpr+\Delta t] [tmplΔt,tmpr+Δt]

其中 Δ t = t i − t i − 1 \Delta t=t_i-t_{i-1} Δt=titi1

这是因为我们再规定时间内能将温度调节到这个区间内的任意一点。

然而具体怎样调我们并不关心。

然后这一次我们判断 [ t m p l − Δ t , t m p r + Δ t ] [tmpl-\Delta t,tmpr+\Delta t] [tmplΔt,tmpr+Δt] [ l i , h i ] [l_i,h_i] [li,hi] 有无交集即可。

如果不在区间里直接一次就 no 了,在区间里因为我们必须要等到那个时间点游客打完酱油再调温度,所以要将温度卡到对应的舒适区间。(这里第二组样例是一个很好的解释。)

code:

#include<cstdio>
#include<algorithm>
using namespace std;
long long t[105],l[105],h[105];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n;
		long long m;
		long long tmpT=0;
		scanf("%d%lld",&n,&m);
		for(int i=1;i<=n;i++)
		{
			scanf("%lld%lld%lld",&t[i],&l[i],&h[i]); 
		}
		long long L=m,r=m;
		int flag=0;
		for(int i=1;i<=n;i++)
		{
			L=L-(t[i]-t[i-1]);
			r=r+(t[i]-t[i-1]);
			if(L>h[i]||r<l[i])
			{
				printf("NO\n");
				flag=1;
				break;
			}
			else
			{
				L=max(L,l[i]);
				r=min(r,h[i]);
			}
		}
		if(flag==0)
		{
		printf("YES\n");
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShineEternal

觉得好就给点鼓励呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值