飞机降落(蓝桥杯)

文章目录

  • [蓝桥杯 2023 省 B] 飞机降落
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
    • 回溯算法(DFS)

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

题目描述

N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 D i D_{i} Di 个单位时间,即它最早可以于 T i T_{i} Ti 时刻开始降落,最晩可以于 T i + D i T_{i}+D_{i} Ti+Di 时刻开始降落。降落过程需要 L i L_{i} Li 个单位时间。

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

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

输入格式

输入包含多组数据。

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

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

以下 N N N 行,每行包含三个整数 T i , D i , L i T_{i},D_{i},L_{i} Ti,Di,Li

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

YES
NO

提示

【样例说明】

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

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

【评测用例规模与约定】

对于 30 % 30 \% 30% 的数据, N ≤ 2 N \leq 2 N2

对于 100 % 100 \% 100% 的数据, 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10 1 ≤ N ≤ 10 1 \leq N \leq 10 1N10 0 ≤ T i , D i , L i ≤ 1 0 5 0 \leq T_{i},D_{i},L_{i} \leq 10^{5} 0Ti,Di,Li105

蓝桥杯 2023 省赛 B 组 D 题。

回溯算法(DFS)

这段代码是为了解决一个航空调度问题,其中需要判断一系列飞机是否都能在限制条件下安全降落。下面我将为你详细注释这段代码,以便更好地理解其逻辑和实现方式。

#include<bits/stdc++.h>
using namespace std;int t,n; // t为测试数据组数,n为每组数据中的飞机数量
int st[11]; // 标记数组,用于记录每架飞机的降落状态,0表示未降落,1表示已降落struct node // 定义结构体用于存储每架飞机的信息
{int dao,pan,luo; // dao表示到达时间,pan表示可以盘旋的单位时间,luo表示降落所需的时间
}p[11]; // 声明结构体数组p,用于存储每组数据中所有飞机的信息// 回溯法尝试为每架飞机安排降落时间
// time为上一架飞机降落的时间
bool backstracking(int u,int time)
{if(u==n) // 如果所有飞机都已尝试安排降落,则返回truereturn true;for(int i=0;i<n;i++) // 遍历所有飞机{// 如果当前飞机未降落且当前时间加上盘旋时间大于等于上一架飞机降落的时间,则尝试为其安排降落if(st[i]==0&&p[i].dao+p[i].pan>=time){st[i]=1; // 标记当前飞机为已安排降落int t=max(time,p[i].dao)+p[i].luo; // 计算当前飞机降落完成的时间if(backstracking(u+1,t)) // 递归尝试为下一架飞机安排降落时间return true; // 如果能为所有飞机安排降落,则返回truest[i]=0; // 回溯,撤销当前飞机的降落安排}}return false; // 如果不能为所有飞机安排降落,则返回false
}int main()
{cin>>t; // 输入测试数据组数while(t--) // 遍历每组测试数据{cin>>n; // 输入每组数据中的飞机数量for(int i=0;i<n;i++){// 输入每架飞机的到达时间、盘旋时间和降落时间cin>>p[i].dao>>p[i].pan>>p[i].luo;}memset(st,0,sizeof(st)); // 初始化标记数组,所有飞机初始状态标记为未降落// 尝试为所有飞机安排降落,如果可以,则输出"YES",否则输出"NO"if(backstracking(0,0)) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0; // 程序结束
}

这段代码利用回溯算法尝试为每架飞机安排降落时间,如果所有飞机都能在它们可以盘旋的时间内安全降落,则输出"YES",否则输出"NO"。通过递归调用backstracking函数,对所有可能的降落顺序进行尝试,同时利用标记数组st记录每架飞机的降落状态,以避免重复尝试。

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

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

相关文章

LinkedList部分底层源码分析

JDK版本为1.8.0_271&#xff0c;以插入和删除元素为例&#xff0c;LinkedList部分源码如下&#xff1a; //属性&#xff0c;底层结构为双向链表 transient Node<E> first; //记录第一个结点的位置 transient Node<E> last; //记录最后一个结点的尾元素 transient …

域控软件安全隔离关键技术剖析:MCU域 VS SOC域

安全隔离的需求 功能安全开发中&#xff0c;软件阶段由软件V模型左边的软件安全需求SSR开始。SSR是从技术安全需求TSR中提取出软件的功能安全需求&#xff0c;大多数情况下具有不同的ASIL等级。 图1 功能安全软件开发V模型 随后&#xff0c;软件安全需求会被分配到软件架构中的…

【无标题】Python中的函数——简洁与高效的编程之美

Python中的函数——简洁与高效的编程之美 在Python编程中&#xff0c;函数是一个非常重要的概念。它们不仅使代码更加简洁易读&#xff0c;还提高了代码的重用性和可维护性。本文将详细介绍Python中的函数&#xff0c;包括其定义、调用、参数传递、返回值以及函数的一些高级特…

AcWing-滑动窗口

单调队列模板题&#xff1a; 所需知识&#xff1a;单调队列 利用双端队列来实现单调队列&#xff1b; 双端队列与普通队列的不同处&#xff1a;双端队列删除元素时既可以删除队头又可以删掉队尾&#xff0c;其可以较好的维护单调队列的单调性&#xff1b; 双端队列的定义及…

蓝桥杯-数组切分

问题描述 已知一个长度为 N 的数组: A1,A2,A3,...AN 恰好是1~ N的一个排列。现 在要求你将 4 数组切分成若干个 (最少一个,最多 N 个)连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 4 1,3,2,4,一共有 5 种切分方法: 1324:每个单独的数显然…

卫星影像联合无人机实现农业保险全生命周期监管监测

随着科技的进步&#xff0c;农业保险监管系统的发展日新月异。特别是近年来&#xff0c;随着卫星技术与无人机技术的结合&#xff0c;为农业保险监管系统带来了前所未有的革新。本文将深入探讨如何利用卫星与无人机方案构建高效的农业保险监管系统&#xff0c;并结合实例进行说…

迷宫-蓝桥602-bfs-2019省赛

代码 #include<iostream> #include<queue> using namespace std;struct node{int x,y;string path; }; char mp[31][51]; char k[]{D,L,R,U};//要走的路径标记 int dir[4][2]{{1,0},{0,-1},{0,1},{-1,0}};//wangleba int vis[30][50];//记录走没走void bfs(){node…

Dart 中 JS 互操作的历史

由于在 Dart 3.3 中达到了令人兴奋的 JavaScript 互操作里程碑&#xff0c;Wasm 的支持刚刚登陆当前的 Flutter 测试版。为了庆祝这一里程碑&#xff0c;我们回顾了 Dart 和 JavaScript 互操作性长达十年的历程。 从 Dart 诞生之初&#xff0c;互操作性就是一个核心重点。2011…

【笔记】Teach less, learn more

文章目录 核心概念针对学习的理念知识高级知识生成器&#xff1a;WHWM四问基础知识与导出知识 案例小学数学小学语文经济学教育学物理学 核心概念 学习方法&#xff1a;以学科大图景为目标的以批判性思维和系联性思考为指导的理解型学习。 学科大图景&#xff1a;一个学科大概…

hashmap ArrayList基础使用 java

hashmap 1 hashmap1.1 hashmap基础使用1.2 遍历hashmap 2 ArrayList2.1 ArrayList基础使用2.2 ArrayList遍历 |--> Collection接口: 单列集合&#xff0c;用来存储一个一个对象。--> list接口:存储有序&#xff0c;可重复的数据。--> ArrayList、LinkList vector-->…

golangci-lint 报错

File is not gci-ed with --skip-generated -s standard,default (gci) golangci-lint 报错上面的错解决办法&#xff1a; 1. 文件换行需要换成"LF" 而不是"CRLF" ---->>> 我用的goland IDE&#xff0c;随便在这个文件删除一个空行&#xff…

20240412,引用,函数高级

老子什么时候能找到一个很爱我还和我一样喜欢看日出日落的对象 一&#xff0c;引用 给变量起别名&#xff0c;数据类型 & 别名原名&#xff1b;引用一定要初始化&#xff0c;初始化之后不能更改 #include <iostream> using namespace std; int main() {int a 10;i…

基于STM32技术的智慧超市系统研究

基于STM32技术的智慧超市系统研究 **摘要&#xff1a;**随着物联网技术的飞速发展&#xff0c;智慧超市作为零售业的一种新兴模式&#xff0c;正越来越受到关注。本文以STM32技术为基础&#xff0c;设计并实现了一套智慧超市系统。论文详细介绍了系统的架构、功能设计以及实现…

导入导出之使用EasyExcel快速进行表格导出

使用 EasyExcel 快速进行表格导入导出操作 在日常工作中&#xff0c;表格的导入和导出是常见的需求。针对这种情况&#xff0c;EasyExcel 提供了便捷的解决方案&#xff0c;可以快速地实现 Excel 表格的导入和导出操作。本文将介绍如何使用 EasyExcel 进行表格导出&#xff0c…

Linux权限的讲解

目录 1、用户的分级 2、用户的身份 3、文件的权限属性 3.1 文件类型 4、chmod 4.1 用八进制形式更改权限 5、chown与chgrp 6、umask 结语 前言&#xff1a; 在Linux下虽然一切都是文件&#xff0c;但是由于文件的权限不一样&#xff0c;导致访问或更改文件存在局限性…

MySQL 常见和不常见的所有查询语句

介绍&#xff1a; MySQL 是一个功能强大的关系型数据库管理系统&#xff0c;支持丰富的查询语句&#xff0c;用于从数据库中检索、插入、更新和删除数据。本文将介绍 MySQL 中常见和不常见的所有查询语句&#xff0c;并为每个语句提供示例。 常见查询语句&#xff1a; 1.sel…

Web App 入门指南:构建预测模型 App 的利器(shiny)

Web App 入门指南&#xff1a;构建预测模型 App 的利器 简介 近年来&#xff0c;随着机器学习和人工智能技术的快速发展&#xff0c;预测模型在各行各业得到了广泛应用。为了方便地部署和使用预测模型&#xff0c;将模型构建成 Web App 是一种非常好的选择。Web App 无需下载…

【leetcode面试经典150题】29.三数之和(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Bitmap OOM

老机器Bitmap预读仍然OOM&#xff0c;无奈增加一段&#xff0c;终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码&#xff1a; Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…

salesforce为不同的profile设置不同的域名,不同域名之间账号不互通

在Salesforce中&#xff0c;你可以通过设置不同的 My Domain 来实现不同的 profile 使用不同的域名&#xff0c;并确保这些域名之间的账号不互通。My Domain 是 Salesforce 提供的定制域名功能&#xff0c;允许你为 Salesforce 组织设置自定义的域名。 以下是一般的步骤&#…