jsp酒店预订网站开发,手机能开wordpress吗,河北工商注册网入口,怎样做娱乐网站【题目来源】https://www.acwing.com/problem/content/4960/【题目描述】 有 N 架飞机准备降落到某个只有一条跑道的机场。 其中第 i 架飞机在 Ti 时刻到达机场上空#xff0c;到达时它的剩余油料还可以继续盘旋 Di 个单位时间#xff0c;即它最早可以于 Ti 时刻开始降落到达时它的剩余油料还可以继续盘旋 Di 个单位时间即它最早可以于 Ti 时刻开始降落最晚可以于 TiDi 时刻开始降落。 降落过程需要 Li 个单位时间。 一架飞机降落完毕时另一架飞机可以立即在同一时刻开始降落但是不能在前一架飞机完成降落前开始降落。 请你判断 N 架飞机是否可以全部安全降落。【输入格式】 输入包含多组数据。 第一行包含一个整数 T代表测试数据的组数。 对于每组数据第一行包含一个整数 N。 以下 N 行每行包含三个整数TiDi 和 Li。【输出格式】 对于每组数据输出 YES 或者 NO代表是否可以全部安全降落。【数据范围】 对于 30% 的数据N≤2。 对于 100% 的数据1≤T≤101≤N≤100≤Ti,Di,Li≤105。【输入样例】 23 0 100 10 10 10 10 0 2 203 0 10 20 10 10 20 20 10 20【输出样例】 YES NO【样例解释】 对于第一组数据可以安排第 3 架飞机于 0 时刻开始降落20 时刻完成降落。安排第 2 架飞机于 20 时刻开始降落30 时刻完成降落。安排第 1 架飞机于 30 时刻开始降落40 时刻完成降落。 对于第二组数据无论如何安排都会有飞机不能及时降落。【算法分析】 由数据范围反推算法复杂度以及算法内容参见https://www.acwing.com/blog/content/32/【算法代码】
#include bits/stdc.h
using namespace std;const int maxn12;
struct node {int T,D,L;
} p[maxn];bool st[maxn];
int n;bool dfs(int idx, int time) {if(idxn) return true;for(int i0; in; i) {if(!st[i]) {if(timep[i].Tp[i].D) {st[i]true;if(dfs(idx1,max(p[i].T,time)p[i].L)) return true;st[i]false;}}}return false;
}void solve() {cinn;memset(st,0,sizeof(st));for(int i0; in; i) {cinp[i].Tp[i].Dp[i].L;}if(dfs(0,0)) coutYESendl;else coutNOendl;
}int main() {int T;cinT;while(T--) {solve();}return 0;
}/*
in:
2
3
0 100 10
10 10 10
0 2 20
3
0 10 20
10 10 20
20 10 20out:
YES
NO
*/
【参考文献】https://www.acwing.com/solution/content/183838/https://www.acwing.com/blog/content/32/