#include <bits/stdc++.h>
using namespace std;
int a[15][3], n, t;
bool flag, st[15];
// k 已降落的数量, last 上一架飞机降落时间
void dfs(int k, int last){
if(k >= n){
puts("YES");
flag = true;
}
// 如果已经降落就返回
if(flag) return;
for(int i = 0; i < n; i++){
if(!st[i]){
// 上一架飞机降落时间 晚于 下一架飞机最晚降落时间 不符合
if(last > a[i][1]) return;
st[i] = true;
// if...else 检查是否降落后可以直接到达
if(last < a[i][0]) dfs(k + 1, a[i][0] + a[i][2]);
else dfs(k + 1, last + a[i][2]);
st[i] = false;
}
}
}
int main(){
cin >> t;
while(t --){
memset(st, false, sizeof st);
flag = false;
cin >> n;
for(int i = 0; i < n; i++){
// 到达时间、 盘旋时间、 降落所需时间
cin >> a[i][0] >> a[i][1] >> a[i][2];
// a[i][1] 记录最晚降落时间
a[i][1] += a[i][0];
}
dfs(0, 0);
if(!flag) puts("NO");
}
return 0;
}
蓝桥杯2023C++省B组 飞机降落
于 2024-03-05 20:34:36 首次发布