#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct palne{
int t,d,l;
}pl[12];
int flagpl[12];
int flag=0;
void dfs(int top,int len,int nowtime){
if(top==len){
flag=1;
return;
}
for(int i=0;i<len;++i){
if(flag==1) return; //为了节省不必要的递归,找到了一种方案就直接退出
if(flagpl[i]!=1&&nowtime<=pl[i].t+pl[i].d){
flagpl[i]=1;
if(nowtime<pl[i].t) dfs(top+1,len,pl[i].t+pl[i].l);
else dfs(top+1,len,nowtime+pl[i].l);
flagpl[i]=0;
}
}
return ;
}
int main(){
int k;
int n;
cin>>k;
for(int i=0;i<k;i++){
cin>>n;
for(int j=0;j<n;++j) cin>>pl[j].t>>pl[j].d>>pl[j].l;
flag=0;
dfs(0,n,0);
if(flag==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
0 回复
0 转发
0 喜欢
3 阅读



