当前位置: 首页 > news >正文

【DFS+贪心】第十四届蓝桥杯省赛C++ B组《飞机降落》(C++)

【题目描述】

有 N 架飞机准备降落到某个只有一条跑道的机场。

其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晚可以于 Ti+Di 时刻开始降落。

降落过程需要 Li 个单位时间。

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

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

【输入格式】

输入包含多组数据。

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

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

以下 N 行,每行包含三个整数:Ti,Di 和 Li。

【输出格式】

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

【数据范围】

对于 30% 的数据,N≤2。
对于 100% 的数据,1≤T≤10,1≤N≤10,0≤Ti,Di,Li≤10的5次方。

【输入样例】

2
3
0 100 10
10 10 10
0 2 20
3
0 10 20
10 10 20
20 10 20

【输出样例】

YES

NO

【样例解释】

对于第一组数据,可以安排第 3 架飞机于 0 时刻开始降落,20 时刻完成降落。安排第 2 架飞机于 20 时刻开始降落,30 时刻完成降落。安排第 1 架飞机于 30 时刻开始降落,40 时刻完成降落。

对于第二组数据,无论如何安排,都会有飞机不能及时降落。

【代码】

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 10;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 ++ ){int t = p[i].t, d = p[i].d, l = p[i].l;if (!st[i] && t + d >= last){st[i] = true;if (dfs(u + 1, max(last, t) + l)) return true;st[i] = false;}}return false;
}int main()
{int T;scanf("%d", &T);while (T -- ){scanf("%d", &n);for (int i = 0; i < n; i ++ ){int t, d, l;scanf("%d%d%d", &t, &d, &l);p[i] = {t, d, l};}memset(st, 0, sizeof st);if (dfs(0, 0)) puts("YES");else puts("NO");}return 0;
}

相关文章:

  • wordpress给指定ID分类添加特定的字段
  • 【skimage包如何安装】
  • CentOS7使用Docker部署.net Webapi
  • python云上水果超市的设计与实现flask-django-php-nodejs
  • C/C++代码性能优化——数据结构和算法
  • 云手机为电商提供五大出海优势
  • 企业数字化转型:是竞争力的关键,还是行业炒作?
  • web自动化测试框架都是有哪些?
  • vim | 介绍vim以及配置vimrc文件
  • 【C语言】C语言运算符优先级详解
  • 汽车制造产生的污废水如何处理排放
  • 简述从浏览器发出请求到数据返回的全过程
  • 洛谷 1679.神奇的四次方数
  • Elasticsearch:ES|QL 入门 - Python Notebook
  • 【每日一题】好子数组的最大分数
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Angular4 模板式表单用法以及验证
  • Django 博客开发教程 8 - 博客文章详情页
  • Github访问慢解决办法
  • React-生命周期杂记
  • SSH 免密登录
  • 订阅Forge Viewer所有的事件
  • 高度不固定时垂直居中
  • 嵌入式文件系统
  • 写给高年级小学生看的《Bash 指南》
  • 最近的计划
  • MPAndroidChart 教程:Y轴 YAxis
  • #define 用法
  • (LeetCode C++)盛最多水的容器
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (一)基于IDEA的JAVA基础10
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .NET Micro Framework初体验(二)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net6使用Sejil可视化日志
  • .NET和.COM和.CN域名区别
  • .NET委托:一个关于C#的睡前故事
  • .NET下ASPX编程的几个小问题
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 蓝桥杯Web真题 ]-布局切换
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [AIGC] 如何建立和优化你的工作流?
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C#7] 1.Tuples(元组)
  • [C++]打开新世界的大门之C++入门
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)