一片 20 分的。
code:
#include <iostream>
#include <cstring>
using namespace std;
int T, n, t[15], d[15], l[15], startt[15], endd[15], book[15], llast = -1;
bool flag = false;
int dfs(int step, int llast){
if (step == n + 1){
flag = true;
return 0;
}
if (flag){
return 0;
}
for (int i = 1; i <= n; i++){
if (!book[i]){
if (t[i] + d[i] < llast){
return 0;
}
book[i] = 1;
int s = t[i];
if (s < llast){
s = llast;
}
dfs(step + 1, s + l[i]);
book[i] = 0;
}
}
return 0;
}
int main(){
cin >> T;
while (T--){
flag = false;
memset(book, 0, sizeof(book));
cin >> n;
for (int i = 1; i <= n; i++){
cin >> t[i] >> d[i] >> l[i];
}
dfs(1, -1);
if (flag){
cout << "YES" << endl;
}else{
cout << "NO" << endl;
}
}
return 0;
}