https://vjudge.net/problem/CodeForces-1304C
题目大意:给出 n n n个顾客到来的时间 t i t_i ti,能承受的最低温度 l i l_i li,能承受的最高温度 r i r_i ri,初始温度为 m m m,每分钟可以令温度增加 1 1 1、减少 1 1 1、或者保持不变,问能否使得这些顾客在到达饭店的那一时刻,温度是可接受的。
思路:维护两个变量 l 、 r l、r l、r,前者表示当前时间可能达到的最低温度,后者表示当前时间可能达到的最高温度,那么看 l i 、 r i l_i、r_i li、ri和 l 、 r l、r l、r是否有交集就行了,然后更新 l 、 r l、r l、r。
#include<bits/stdc++.h>
#define pr pair<int,int>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
int t,n,m;
int ti,li,ri,l,r,pre;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
pre=0,l=r=m;
bool flag=1;
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&ti,&li,&ri);
l-=ti-pre,r+=ti-pre;
pre=ti;
if(r<li||l>ri)
flag=0;
l=max(l,li);
r=min(r,ri);
}
printf("%s\n",flag?"YES":"NO");
}
return 0;
}