Sloution
一道简单的思维题
贪心思想,在操作第一组数据的时候,要尽量让第二组数据也满足条件
下面,研究两组数据
把可能操作的范围表示出来,(区间)
对于样例1
初始0,第一个时间5,那么可操作氛围在[-5,5]
又让它,满足【1,2】
那么取交集 (最小边去 两区间的最大值 ,最大去最小 ,若l>r而无交集)
·-------
第一轮结束,发现循环
struct Q
{
ll t, l, h;
}q[510];
bool cmp(Q a,Q b){
return a.t < b.t;
}
int main()
{
//freopen("in.txt", "r", stdin);
int t;
cin >> t;
while(t--){
int n, w;
cin >>n >> w;
_for(i,1,n+1){
cin >> q[i].t >> q[i].l >> q[i].h;
}
sort(q+1, q + n+1, cmp);
ll wl = w, wh = w;
int f = 0;
_for(i,1,n+1){
wl = max(wl - (q[i].t-q[i-1].t), q[i].l);
wh = min(wh + (q[i].t-q[i-1].t), q[i].h);
if(wl>wh){
f = 1;
break;
}
}
if(f)
puts("NO");
else
puts("YES");
}
}