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

news2024/11/28 22:37:36

原题链接:[蓝桥杯 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.coloradmin.cn/o/1599164.html

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

相关文章

【随笔】Git 高级篇 -- 管理多分支 git rebase(二十二)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

支付系统核心逻辑 — — 状态机(JavaGolang版本)

支付系统核心逻辑 — — 状态机 代码地址&#xff1a;https://github.com/ziyifast/ziyifast-code_instruction/tree/main/state_machine_demo 1 概念&#xff1a;FSM&#xff08;有限状态机&#xff09;&#xff0c;模式之间转换 状态机&#xff0c;也叫有限状态机&#xff08…

TCE测试管理平台-社区版(免费),手机端小程序如何使用?

TCE测试管理平台社区版&#xff08;免费&#xff09;是泽众云测试平台SAAS服务产品之一&#xff0c;提供给个人和企业免费使用&#xff0c;无需安装&#xff0c;注册即可使用。 TestCenter Enterprise&#xff08;简称TCE&#xff09;是由泽众软件开发的一款面向测试流程的测试…

深入K8S实战

K8S: 深入K8S实战进阶篇 1、搭建 Kubernetes 集群 1.1、搭建方案 1.1.1、minikube minikube 是一个工具&#xff0c; 能让你在本地运行 Kubernetes。 minikube 在你的个人计算机&#xff08;包括 Windows、macOS 和 Linux PC&#xff09;上运行一个一体化&#xff08;all-i…

【经典算法】LeetCode 136:只出现一次的数字(Java/C/Python3实现含注释说明,Easy)

个人主页&#xff1a; 进朱者赤 阿里非典型程序员一枚 &#xff0c;记录平平无奇程序员在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法&#xff08;公众号同名&#xff09; 目录 题目描述思路及实现方式一&#xff1a;使用异或运算&#xff08;推荐&#xff09;思…

【LatentDiffusion 代码详解(1)】LatentDiffusion 的 yaml 解读

YAML 文件提供了一种清晰、简洁且易于理解的方式来描述配置信息&#xff0c;特别适用于机器学习模型的超参数调优和实验管理。 以 Latent Diffusion 官方代码仓库中的 https://github.com/CompVis/latent-diffusion/blob/main/configs/autoencoder/autoencoder_kl_32x32x4.yam…

MySQL表结构的操作

文章目录 1. 创建表2. 查看表3. 修改表4. 删除表 1. 创建表 create table table_name (field1 datatype,field2 datatype,field3 datatype )character set 字符集 collate 校验集 engine 存储引擎;field&#xff1a;列名datatype&#xff1a;列的类型character set&#xff1a…

数字乡村创新实践探索农业现代化与乡村振兴新路径:科技赋能农村全面振兴与农民福祉新纪元

目录 引言 一、数字乡村与农业现代化新路径 1、智慧农业引领农业现代化 2、农业产业链的数字化转型 二、数字乡村与乡村振兴新路径 1、农村信息化水平的提升 2、农村治理模式的创新 三、科技赋能农村全面振兴与农民福祉新纪元 1、提升农业生产效益与农民收入 2、促进…

2024蓝桥杯——宝石问题

先展示题目 声明 以下代码仅是我的个人看法&#xff0c;在自己考试过程中的优化版&#xff0c;本人考试就踩了很多坑&#xff0c;我会—一列举出来。代码可能很多&#xff0c;但是总体时间复杂度不高只有0(N) 函数里面的动态数组我没有写开辟判断和free&#xff0c;这里我忽略…

企业网站建设需要了解什么

在现代商业环境中&#xff0c;企业网站已经成为企业宣传、推广和销售的重要工具。企业网站的建设需要考虑多个因素&#xff0c;包括以下几个方面&#xff1a; 首先&#xff0c;了解企业的目标和定位。企业网站的建设应该围绕企业的目标和定位展开&#xff0c;以达到企业在市场中…

基于python的景点舆情分析,爬虫获取景点数据,评论数据,情感分析和可视化展示

概述 毕业设计项目中&#xff0c;构建一个基于Python的系统&#xff0c;用于抓取携程网上的江西省景点信息及对应评论数据&#xff0c;并进行深入的舆情分析。 数据获取&#xff1a; 使用Python的requests库模拟浏览器发送HTTP请求至指定URL&#xff08;https://m.ctrip.com/r…

HW机试1

1.字符串翻转函数 string s;reverse(s.begin(),s.end()); 2.不区分大小写统计字符出现的个数 需要判断是大小写字母。根据ASCII码值&#xff0c;大写字母32小写字母 void func(string s,char ch) {int lens.length(),cnt0;if(ch>64){for(int i0;i<len;i){if(s[i]32ch…

用户相关的配置文件

1.新建用户的配置文件从哪里来的&#xff1f; 在Linux操作系统中都有一个默认行为&#xff0c;当在Linux操作系统中新建用户时&#xff0c;都会在/home/用户名 也就是新建用户的家目录中配置三个隐藏文件 分别是.bash-logout .bash-profile .bashrc 如上图所示&#xff…

解决WPS右键菜单冗余选项,去除WPS右键菜单选项

问题描述 安装WPS后&#xff0c;右键菜单会多出许多无用的选项&#xff0c;如何去除&#xff1f; 解决方法 按下WindowsS打开搜索栏&#xff0c;搜索配置工具打开 勾选所有的关闭和隐藏选项

通过Maven导入本地jar包

1.创建lib文件夹&#xff0c;把jar包放到文件夹里面 2.在pom里导入依赖 导入完成

AI数字人对话之RealChar框架源码解读

零.功能介绍 与虚拟角色(非形象)进行文本或语音会话 体验地址:RealChar. 代码库:GitHub - Shaunwei/RealChar: 🎙️🤖Create, Customize and Talk to your AI Character/Companion in Realtime (All in One Codebase!). Have a natural seamless conversation with AI…

2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16

一、打开chrome按f12&#xff0c;点击右上角的“关注”按钮&#xff0c;抓包位置如下&#xff1a; (图1 follow接口) 二、follow接口分析 1、请求地址 https://edith.xiaohongshu.com/api/sns/web/v1/user/follow 2、请求方法: POST 3、请求头&#xff1a; :authority: edith…

【绘图案例-带圆环的图片-图片 Objective-C语言】

一、接下来,我们接着来说,带圆环的图片,图片, 1.我们还差这个,图片,啊, 图片还没有画上去啊,圆环已经画完了, 接下来呢,我们应该尝试着去画图片, // 12.画图片 image drawAtPoint:(CGPoint) 如果我直接这么着去画的话, 那么,实际上,就会把那个方形的东西,…

Linux Shell Script 编程详解

1. Shell Script入门介绍 1.1 什么是Shell Shell 是指一种应用程序&#xff0c;它是用户使用 Linux 的桥梁&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务。Shell 脚本&#xff08;shell script&#xff09;&#xff0c;是一种为…