【真题解析】题目 3151: 蓝桥杯2023年第十四届省赛真题-飞机降落【C++ DFS 超详解注释版本】

爆搜冥想

  • 暴力枚举每一辆飞机
  • 对于每一个飞机都只存在两种情况,可以降落和不可以降落
  • 如果可以降落,计算降落后最早可以降落的时间pre,作为下一次递归的传参
  • 如果不可以降落,枚举下一辆飞机

注意这辆的降落有盘旋这种量子叠加态!
说人话就是:

  • 降落时有两种情况,一种是开始降落时间比pre后,那么从这个降落时间开始往后计算进行下一次递归即可。
  • 还有一种就是,在盘旋的状态中可以降落,那么就直接用pre计算下一次最早降落的时间,也就是结束盘旋状态立即降落。

核心出装

//plane.st:最早开始时间	plane.con:可持续时间 plane.netm:落地需要的时间 
bool dfs(vector<plane> &v,vector<bool> &bl,int pre,int count){			//pre和count默认是为0的 if(count==v.size()) return true;									//如果搜索了全部的飞机,函数返回true             for(int i=0;i<v.size();i++){										//遍历数组中所有飞机                if(bl[i] == false){												//如果找到一架飞机没有降落就使它降落 bl[i] = true;												//将该飞机的状态设置为已经降落 if(pre < v[i].st){											//如果这辆斐济满足降落条件 if(dfs(v, bl, v[i].st+v[i].netm, count+1)) return true;	//继续搜索这辆飞机降落后的时间,如果满足返回true }else if(pre <= v[i].st+v[i].con){							//如果这辆飞机盘旋后可以满足降落条件 if(dfs(v, bl, pre+v[i].netm, count+1)) return true;		//让这一架飞机立即降落,搜索它降落后的情况,满足返回true }bl[i] = false;												//如果不满足降落条件,将这辆飞机的状态恢复成false }}return false;														//搜索结束找不到返回false 
}

返回泉水

// 蓝桥真题-飞机降落 
#include<bits/stdc++.h>
using namespace std;
class plane{
public:int st;//最早开始时间 int con;//可持续费的时间 int netm;//落地需要的时间  plane(int s,int c,int ne){st=s;con=c;netm=ne;} 
};
//plane.st:最早开始时间	plane.con:可持续时间 plane.netm:落地需要的时间 
bool dfs(vector<plane> &v,vector<bool> &bl,int pre,int count){			//pre和count默认是为0的 if(count==v.size()) return true;									//如果搜索了全部的飞机,函数返回true             for(int i=0;i<v.size();i++){										//遍历数组中所有飞机                if(bl[i] == false){												//如果找到一架飞机没有降落就使它降落 bl[i] = true;												//将该飞机的状态设置为已经降落 if(pre < v[i].st){											//如果这辆斐济满足降落条件 if(dfs(v, bl, v[i].st+v[i].netm, count+1)) return true;	//继续搜索这辆飞机降落后的时间,如果满足返回true }else if(pre <= v[i].st+v[i].con){							//如果这辆飞机盘旋后可以满足降落条件 if(dfs(v, bl, pre+v[i].netm, count+1)) return true;		//让这一架飞机立即降落,搜索它降落后的情况,满足返回true }bl[i] = false;												//如果不满足降落条件,将这辆飞机的状态恢复成false }}return false;														//搜索结束找不到返回false 
}
int main(){int t;cin>>t;						//输入测试数据总数 while(t--){					//执行对应次数 int n;					//输入飞机数量 cin>>n;vector<plane> v;		//初始化动态数组存放飞机 vector<bool> bl(n,false);	//每一辆飞机的状态初始化为false while(n--){				//输入每一架飞机的信息 int t,d,l;			 cin>>t>>d>>l;v.push_back(plane(t,d,l));		//将该飞机推入动态数组 }if(dfs(v,bl,0,0)) cout<<"YES"<<endl;	//如果搜索到一种情况能使得飞机们降落返回true else cout<<"NO"<<endl;					//否则返回false }return 0;
}

结语🤣

这一次blog尝试了比较抽象的标题,这里进行解读:

  • 爆搜冥想:即核心思想,思路过程。
  • 核心出装:即完成功能的主要实现函数,dfs函数。
  • 返回泉水:即所有代码的一览。

编译环境

C++ 11 && DevC++
在这里插入图片描述

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

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

相关文章

【前端面试3+1】02插槽、箭头函数与普通函数、重绘重排、【回文数】

一、对插槽的理解 1.定义及作用&#xff1a; 插槽是一种用于在组件中插入内容的特殊语法。它的作用是让父组件可以向子组件传递内容&#xff0c;从而实现组件的灵活性和复用性。 2.分类&#xff1a; 插槽可以分为具名插槽和作用域插槽。 2.1具名插槽&#xff1a; 具名插槽允许父…

war在服务器上读取文件报:java.io.IOException Failed to read zip entry source

war在服务器上读取文件报&#xff1a;java.io.IOException: Failed to read zip entry source 报错原因是打包编译将xlsx文件解压缩导致出问题&#xff0c;出现的情况是偶然的&#xff0c;为了避免再次出席那这种问题,在pom文件中加入以下配置即可避免此问题。 maven打包时如何…

苹果macOS 14.4.1正式发布:修复无法使用外接显示器USB集线器问题

3 月 26 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 14.4.1 更新&#xff08;内部版本号&#xff1a;23E224&#xff09;&#xff0c;本次更新距离上次发布隔了 18 天。 需要注意的是&#xff0c;因苹果各区域节点服务器配置缓存问题&#xff0c;可能有些地方探测…

怎么在vscode里面保存图片视频音频文件(只需要两步)?

在硬盘中建立一个新的文件夹(自定义命名~我的这里是html→jpg) 第一步建立文件夹 第二步右键打开然后选择其他方式打开&#xff0c;选择code打开就会自己复制过去了

Memcached分布式内存对象数据库

一 Memcached 概念 Memcached 是一个高性能的分布式内存对象缓存系统&#xff0c;用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数&#xff0c;从而提高动态、数据库驱动网站的速度。 二 在架构中的位置 Memcached 处于前端或中间件后…

Gitea CORS Access-Control-Allow-Origin 的问题

最近我们在想使用我们提供的代码库进行元数据提供的时候&#xff0c;启动的服务报 CORS 问题。 如果你的 Gitea 服务器是直接暴露给外部使用的话&#xff0c;可以在 Gitea 的配置文件中添加下面的配置&#xff1a; [cors] ENABLED true ALLOW_DOMAIN *在完成上面的…

基于nodejs+vue网购平台管理系统python-flask-django-php

本篇论文对网购平台管理系统的需求分析、功能设计、系统设计进行了较为详尽的阐述&#xff0c;并对系统的整体设计进行了阐述&#xff0c;并对各功能的实现和主要功能进行了说明&#xff0c;并附上了相应的操作界面图。 前端技术&#xff1a;nodejsvueelementui, Express 框架…

Qt 作业 24/3/26

1、实现闹钟 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QLineEdit>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent …

Generating Permutations全排列

Problem generating all permutations of the numbers 1, 2, . . . , n. The first algorithm Idea 1[all the permutations of the numbers 2,3,…,n]&#xff0c; 2[all the permutations of the numbers 1,3,…,n]&#xff0c; ……&#xff0c; n[all the permutations of …

eclipse启动报错

报错&#xff1a; An error has occurred. See the log file C:\eclipse\1711430260036.log 原因&#xff1a; 因为 eclipse控制设置的jdk是1.6&#xff0c; 安装了jdk11后&#xff0c;系统默认jdk是jdk11,所以找不到对应的jdk6. 解决方法&#xff1a;将jdk11的配置 从 计…

【Mybatis 基础】增删改查(@Insert, @Delete, @Update, @Select)

Mybatis Insert Delete Update Select Mybatis用法基础操作 - 删除delete 传参SpringbootMybatisCrudApplicationTests 测试类删除预编译SQL 基础操作 - 插入Insert 插入SpringbootMybatisCrudApplicationTests 测试类插入对象主键返回 基础操作 - 更新UPDATE 更新SpringbootMy…

k8s系列之十七 Istio中的服务治理

删除前面配置的目的地规则 [rootk8s-master ~]# kubectl delete destinationrule details destinationrule.networking.istio.io "details" deleted [rootk8s-master ~]# kubectl delete destinationrule productpage destinationrule.networking.istio.io "pr…

pdfjs 实现给定pdf数据切片高亮并且跳转

pdfjs 实现给定pdf数据切片高亮并且跳转 pdfjs 类的改写基本展示需求的实现高亮功能的实现查询功能分析切片数据处理 pdfjs 类的改写 需求&#xff1a; pdf文件被解析成多个分段&#xff0c;每个分段需要能够展示&#xff0c;并且通过点击分段实现源pdf内容的高亮以及跳转需求…

一些常见的Docker问题和答案

什么是Docker&#xff1f;它的主要功能是什么&#xff1f; Docker是一种开源的容器化平台&#xff0c;用于构建、部署和运行应用程序。它的主要功能包括&#xff1a;快速构建、分发和运行应用程序的容器化环境&#xff0c;实现应用程序的可移植性和可扩展性。 Docker和虚拟机…

视频声音生成字幕 pr生成视频字幕 以及字幕乱码的解决

目录 目录 1、首先把要生成字幕的视频拖入以创建序列 2、点击工具栏的 窗口 选择 文本 3、选择字幕下的 转录序列 4、选择输出的语言&#xff08;主要看视频声音说的是啥语言&#xff09; 5、音轨 选择 音频1​编辑 6、点击转录 7、等待转录文本 8、点击创建说明性字幕按…

论文阅读笔记——Rethinking Pointer Reasoning in Symbolic Execution

文章目录 前言Rethinking Pointer Reasoning in Symbolic Execution12.1、基本情况概述12.2、摘要12.3、引言12.4、方法12.4.1、基本版本12.4.1.1、内存加载和存储12.4.1.2、状态合并 12.4.2、改进12.4.2.1、地址范围选择12.4.2.2、内存清理12.4.2.3、符号化的未初始化内存12.4…

Java实体类之间的转换

一.为什么要转换实体类 通常在后端开发中经常不直接返回实体Entity类&#xff0c;经过处理转换返回前端&#xff0c;前端提交过来的对象也需要经过转换Entity实体才做存储。 二.怎么转换 使用的BeanUtils.copyProperties方法虽然可以实现转换&#xff0c;但是比较粗暴&#…

卷起来——高级数据分析师

要成为一名高级数据分析师&#xff0c;需要掌握一系列的技能&#xff0c;包括数据处理、统计分析、机器学习、数据可视化以及业务理解等&#xff0c;喜欢或者想往这方面发展的童鞋们&#xff0c;卷起来&#xff0c;点击以下链接中的链接&#xff0c;备注"分析"进群交…

Clip Converter - 视频在线下载方法

Clip Converter - 视频在线下载方法 1. Video URL to Download2. Continue3. StartReferences YT to MP4 & MP3 Converter! https://www.clipconverter.cc/ Clip Converter is a free online media conversion application, which allows you to reocord, convert and do…

YOLOv8改进 | 主干篇 | 修复官方去除掉PP-HGNetV2的通道缩放功能(轻量又涨点,全网独家整理)

一、本文介绍 本文给大家带来的改进机制是大家在跑RT-DETR提供的HGNetV2时的一个通道缩放功能&#xff08;官方在前几个版本去除掉的一个功能&#xff09;&#xff0c;其中HGNetV2当我们将其集成在YOLOv8n的模型上作为特征提取主干的时候参数量仅为230W 计算量为6.7GFLOPs该网…