AcWing 4957. 飞机降落
原题链接
简单
作者:
来杯whiskey
,
2025-04-04 16:16:18
· 四川
,
所有人可见
,
阅读 1
#include <bits/stdc++.h>
using u32 = unsigned;
using i64 = long long;
using u64 = unsigned long long;
const int N = 15;
int a[N][3];
int n;
bool st[N];
bool flag;
void dfs(int u, int last) {
if (u > n) {
flag = true;
return;
}
for (int i = 1; i <= n; i ++) {
if (!st[i]) {
if (last > a[i][1]) return;
st[i] = true;
if (last < a[i][0]) dfs(u + 1, a[i][0] + a[i][2]);
else dfs(u + 1, last + a[i][2]);
st[i] = false;
}
}
}
void solve() {
flag = false;
memset(st, false, sizeof st);
std::cin >> n;
for (int i = 1; i <= n; i ++) {
std::cin >> a[i][0] >> a[i][1] >> a[i][2];
a[i][1] += a[i][0];
}
dfs(1, 0);
if (flag) {
std::cout << "YES\n";
} else {
std::cout << "NO\n";
}
}
int main()
{
int t;
std::cin >> t;
while (t --) {
solve();
}
return 0;
}