您的位置:首页 > 教育 > 锐评 > 开个小公司做什么好_手机上如何申请营业执照_郑州网站设计有哪些_免费测试seo

开个小公司做什么好_手机上如何申请营业执照_郑州网站设计有哪些_免费测试seo

2025/4/1 19:45:03 来源:https://blog.csdn.net/2301_80170590/article/details/146715440  浏览:    关键词:开个小公司做什么好_手机上如何申请营业执照_郑州网站设计有哪些_免费测试seo
开个小公司做什么好_手机上如何申请营业执照_郑州网站设计有哪些_免费测试seo

问题描述

NN 架飞机准备降落到某个只有一条跑道的机场。其中第 ii 架飞机在 TiTi​ 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 DiDi​ 个单位时间,即它最早可以于 TiTi​ 时刻开始降落,最晚可以于 Ti+DiTi​+Di​ 时刻开始降落。降落过程需要 LiLi​ 个单位时间。

一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。

请你判断 NN 架飞机是否可以全部安全降落。

输入格式

输入包含多组数据。

第一行包含一个整数 TT,代表测试数据的组数。

对于每组数据,第一行包含一个整数 NN。

以下 NN 行,每行包含三个整数:TiTi​,DiDi​ 和 LiLi​。

输出格式

对于每组数据,输出 YESYES 或者 NONO,代表是否可以全部安全降落。

代码

递归调用 dfs 函数,处理下一个元素,更新 last 为 max(p[i].t, last) + p[i].l如果递归调用返回 false,说明当前选择不可行,将元素 i 标记为未访问st[i] = false;
#include<bits/stdc++.h>
using namespace std;#define int long longconst int N = 14;
int n;struct Plane
{int t, d, l;
}p[N];bool st[N];bool dfs(int u, int last){if(u == n) return true;for(int i = 0; i < n; i ++ ) {if(!st[i] && p[i].t+p[i].d >= last) {st[i] = true;if(dfs(u+1, max(p[i].t, last)+p[i].l)) return true;st[i] = false;}}return false;
}signed main()
{int T;cin >> T;while(T--){cin >> n;for(int i = 0; i < n; i ++ ) {cin >> p[i].t >> p[i].d >> p[i].l;}memset(st,0,sizeof(st));if(dfs(0,0)) cout << "YES"<<endl;else cout << "NO" << endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com