看数据量 fact(10) = 3628800. 直接暴力dfs
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N = 12;
struct node {
int t, d, l;
};
node q[N];
bool vis[N];
int n, t, d, l;
vector<int> v;
bool dfs(int x, int cur) {
if (x == n) {
return true;
}
bool res = false;
for (int i = 0; i < n; i ++) {
if (!vis[i]) {
if (q[i].t + q[i].d >= cur) {
vis[i] = true;
res = res || dfs(x + 1, max(q[i].t, cur) + q[i].l);
vis[i] = false;
}
}
}
return res;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
while(T --) {
memset(vis, false, sizeof vis);
cin >> n;
for (int i = 0; i < n; i ++) {
cin >> t >> d >> l;
q[i] = {t, d, l};
}
if (dfs(0, 0)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}