P9241 [蓝桥杯 2023 省 B] 飞机降落

原题链接:[蓝桥杯 2023 省 B] 飞机降落 - 洛谷 

目录

1. 题目描述

2. 思路分析

3. 代码实现


1. 题目描述

2. 思路分析

dfs全排列的变形题。

因为最后问飞机是否降落,并且一架飞机降落完毕时另一架飞机才能降落。所以我们设置dfs的两个变量cnt为安全降落的飞机数量cnt和上一架飞机降落的时间sum。

设置一个vis[ ]数组表示当前飞机有没有被搜过,一个变量f表示所有飞机是否能安全降落,如果能f最后值为1,否则为0。 

dfs入口就写dfs(0,0),进行搜索即可。

当前飞机如果能安全降落,那么它最晚的降落时间(t[i]+d[i],因为能盘旋在空中)必须大于等于上一架飞机降落的时间sum。也就是能往下搜的条件是首先飞机没有被搜过(!vis[i]),同时t[i]+d[i]>=sum (该飞机最晚降落时间大于等于上一架飞机降落时间)。

要搜下一架飞机时,这时候要dfs(cnt+1,max(t[i],sum)+l[i]),之所以要取max,就是如果当前飞机的降落时间t[i]比sum小,就从上一架飞机降落的时间sum开始降落,否则就以t[i]时间开始降落。

注意要回溯

3. 代码实现

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=20;
int n,t[N],d[N],l[N],f;
bool vis[N];void dfs(int cnt,int sum){if(cnt==n){f=1; return;}for(int i=1;i<=n;i++){if(!vis[i]&&t[i]+d[i]>=sum){vis[i]=true;dfs(cnt+1,max(t[i],sum)+l[i]);vis[i]=false;}}
}signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int _; cin>>_;while(_--){cin>>n;for(int i=1;i<=n;i++) vis[i]=0;f=0;for(int i=1;i<=n;i++){cin>>t[i]>>d[i]>>l[i];}dfs(0,0);if(f) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录训练营第三十五期|第天14|二叉树part01|理论基础● 递归遍历 ● 迭代遍历● 统一迭代

TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int val){this.val val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.right right;} }144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; /*…

计算机科学与导论 第十六章 安全

文章预览&#xff1a; 16.1引言16.1.1 安全目标16.1.2 攻击 16.2机密性16.2.1 对称密钥密码术16.2.2 非对称密钥密码术 16.1引言 为了安全&#xff0c;信息需要避开未授权的使用(机密性),保护信息不受到未授权的篡改(完整性)&#xff0c;并且对于得到授权的实体来说是需要时可…

常用序号、标点符号 相关正则表达式

(?:[\(|&#xff08;|\[])?\d[\]|\)&#xff09;|\、]|[\u2460-\u2473]|[\u4e00-\u5341][.|、]匹配序号 \d\.(?!\d)|\d、常规序号匹配&#xff1a; rule1: 标准格式1. 2、 rule2:排除小数 [^\u4E00-\u9FA5\uFF00-\uFFEFa-zA-Z0-9\s]所有符号 [\u3000-\u303F\uFF00-\uFFE…

AtomGit 体验

AtomGit 体验 注册登录 直接可以通过其他应用授权登录AtomGit&#xff0c;登录后可以拥有基础的权限体验AtomGit所提供的功能。如果需要建立仓库和其他高级功能需要完善个人的手机号和邮箱 默认界面 非常清爽体验非常好&#xff0c;用户能够更加集中于所管理的仓库。 创建…

分类算法——模型选择与调优(三)

交叉验证 交叉验证&#xff1a;将拿到的训练数据&#xff0c;分为训练和验证集。以下图为例&#xff1a;将数据分成4份&#xff0c;其中 一份作为验证集。然后经过4次&#xff08;组&#xff09;的测试&#xff0c;每次都更换不同的验证集。即得到4组模型的 结果&#xff0c;取…

使用Google reCAPTCHA防止机器注册

本文作者&#xff1a;陈进坚 博客地址&#xff1a;https://jian1098.github.io CSDN博客&#xff1a;https://blog.csdn.net/c_jian 简书&#xff1a;https://www.jianshu.com/u/8ba9ac5706b6 联系方式&#xff1a;jian1098qq.com 环境要求 能翻墙的电脑域名 验证原理 在谷歌…

c++中一些常用库函数

1.最大公约数 需要包括头文件#include<algorithm>,直接写__gcd(a,b),就是求a与b的最大公约数。 #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<stack> #include<map>…

C++入门之类和对象

C入门之类和对象 文章目录 C入门之类和对象1. 类的6个默认对象2. 构造函数2.1 概念2.2 特性2.3 补丁 3. 析构函数3.1 概念3.2 特性3.3 总结 4. 拷贝构造函数4.1 概念4.2 特性4.3 总结 1. 类的6个默认对象 如果一个类中什么都没有&#xff0c;那么这个类就是一个空类。但是&…

个人网站制作 Part 21 添加多语言支持 | Web开发项目

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加多语言支持&#x1f528;使用多语言库&#x1f527;步骤 1: 选择多语言库&#x1f527;步骤 2: 安装vue-i18n&#x1f527;步骤 3: 创建多语言文件 &#x1f528;使用…

【网站项目】 游泳馆管理系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

教育短信群发有效果吗?邦之信短信平台为您分析!

教育短信群发确实是一种有效的营销和沟通手段&#xff0c;尤其在教育行业&#xff0c;其效果得到了广泛的认可。以下是教育短信群发的主要效果及其原因分析&#xff1a; 首先&#xff0c;短信群发能够覆盖广大的手机用户群体&#xff0c;几乎每个人都有手机&#xff0c;且经常…

uni-app学习

目录 一、安装HBuilderX 二、创第一个uni-app 三、项目目录和文件作用 四、全局配置文件&#xff08;pages.json&#xff09; 4.1 globalStyle&#xff08;全局样式&#xff09; 导航栏&#xff1a;背景颜色、标题颜色、标题文本 导航栏&#xff1a;开启下拉刷新、下拉背…

电商价格监测合规性探讨

品牌在做控价、数据分析的过程中&#xff0c;都需要先有数据作为支撑&#xff0c;也就是说要先采集数据&#xff0c;价格监测也是如此&#xff0c;监测的基础是采集&#xff0c;现在主流的采集形式是爬虫采集&#xff0c;可以理解为人工采集的升级版&#xff0c;以机器代替人工…

华为海思数字芯片设计笔试第七套

声明 下面的题目作答都是自己认为正确的答案&#xff0c;并非官方答案&#xff0c;如果有不同的意见&#xff0c;可以评论区交流。 这些题目也是笔者从各个地方收集的&#xff0c;感觉有些题目答案并不正确&#xff0c;所以在个别题目会给出自己的见解&#xff0c;欢迎大家讨论…

QT常量中有换行符解决方法--使用中文显示乱码或者编译报错

QT6.3常量中有换行符 int ret2QMessageBox::information(this,QString::fromLocal8Bit("提示"),QString::fromLocal8Bit(("确认启动设备吗?")),QMessageBox::Yes,QMessageBox::No); 确保显示正常&#xff0c;建议每次使用时&#xff0c;中文的前后加一个空…

PLSQL中文乱码问题 + EZDML导入数据库模型乱码

PLSQL中文乱码问题 EZDML导入数据库模型乱码 查询数据库字符集 select userenv(language) from dual;查询本地字符集编码 select * from V$NLS_PARAMETERS;理论上 数据库字符集 跟 本地字符集编码 是一致的 本地字符集编码需要拼接字段值 NLS_LANGUAGE NLS_TERRITORY NLS…

【机器学习300问】71、神经网络中前向传播和反向传播是什么?

我之前写了一篇有关计算图如何帮助人们理解反向传播的文章&#xff0c;那为什么我还要写这篇文章呢&#xff1f;是因为我又学习了一个新的方法来可视化前向传播和反向传播&#xff0c;我想把两种方法总结在一起&#xff0c;方便我自己后续的复习。对了顺便附上往期文章的链接方…

uni-app vue3 setup 如何使用 onShow

在uni-app中&#xff0c;onShow是uni.onAppShow的别名&#xff0c;用于监听当前小程序被用户切换到前台运行时触发。在Vue 3中&#xff0c;你可以通过以下方式使用onShow&#xff1a; 在页面的vue文件中添加onShow方法&#xff1a; javascript <button click“onShow”&g…

Java工程师常见面试题:Java基础(一)

1、JDK 和 JRE 有什么区别&#xff1f; JDK是Java开发工具包&#xff0c;它包含了JRE和开发工具&#xff08;如javac编译器和java程序运行工具等&#xff09;&#xff0c;主要用于Java程序的开发。而JRE是Java运行环境&#xff0c;它只包含了运行Java程序所必须的环境&#xf…

MySQL与Redis缓存一致性的实现与挑战

缓存是提高应用性能的重要手段之一&#xff0c;而 MySQL 和 Redis 是两种常用的数据存储和缓存技术。在许多应用中&#xff0c;常常将 Redis 用作缓存层&#xff0c;以加速对数据的访问。然而&#xff0c;在使用 MySQL 和 Redis 组合时&#xff0c;保持缓存与数据库之间的一致性…