*【每日一题 基础题】 [蓝桥杯 2023 省 B] 飞机降落

题目描述
N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晚可以于 Ti + Di 时刻开始降落。降落过程需要 Li个单位时间。
一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。
请你判断 N 架飞机是否可以全部安全降落。
输入格式
输入包含多组数据。
第一行包含一个整数 T,代表测试数据的组数。
对于每组数据,第一行包含一个整数 N。
以下 N 行,每行包含三个整数:Ti,Di 和 Li。
输出格式
对于每组数据,输出 YES 或者 NO,代表是否可以全部安全降落。
样例输入
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 时刻完成降落。
对于第二组数据,无论如何安排,都会有飞机不能及时降落。
对于 30% 的数据,N ≤ 2。
对于 100% 的数据,1 ≤ T ≤ 10,1 ≤ N ≤ 10,0 ≤ Ti , Di , Li ≤ 105。

import java.util.*;  public class Main {  static final int N = 10;  static boolean[] st = new boolean[N];  static int n;  static boolean flag = false;  static int[] t = new int[N];  static int[] d = new int[N];  static int[] l = new int[N];  static void dfs(int u, int last) {  if (flag) return; // If we found one valid sequence, return  if (u == n) { // All planes have landed  flag = true;  return;  }  for (int i = 0; i < n; i++) {  if (!st[i]) { // If the current plane hasn't landed yet  if (t[i] + d[i] >= last) { // Check if it can wait for the last plane to land  st[i] = true; // Mark the plane as landed  if (t[i] > last) { // If this plane arrives after the last one has landed  dfs(u + 1, t[i] + l[i]); // Update last to arrival + landing time  } else { // If this plane arrives before or when the last one is landing  dfs(u + 1, last + l[i]); // Wait for the last plane to land  }  st[i] = false; // Backtrack  } else {  return; // If it can't wait, return  }  }  }  }  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int T = scanner.nextInt();  while (T-- > 0) {  n = scanner.nextInt();  for (int i = 0; i < n; i++) {  t[i] = scanner.nextInt();  d[i] = scanner.nextInt();  l[i] = scanner.nextInt();  }  for (int i = 0; i < N; i++) {  st[i] = false; // Reset the landing status  }  flag = false; // Reset the flag  dfs(0, 0); // Start DFS  if (flag) {  System.out.println("YES");  } else {  System.out.println("NO");  }  }  }  
}
import java.util.*;public class Main {static boolean flag=false;static boolean[] st;static int n;static Map<Integer,int[]> map;//static Scanner cin = new Scanner(System.in);public static void main(String[] args){int t= cin.nextInt();while(t--!=0)solve();}private static void solve() {n= cin.nextInt();flag=false;//标记,如果为true则搜素到答案st=new boolean[n];//初始胡标记数组,标记数组用于查询未安排下降的飞机,如果标记数组全为true,则代表能成功全部安排map=new HashMap<>();for (int i = 0; i < n; i++) {//输入int t= cin.nextInt();int d= cin.nextInt();int l= cin.nextInt();map.put(i,new int[]{t,d,l});}for (int i=0;i<n;i++){//枚举第一架飞机安排st[i]=true;//标记搜索dfs(map.get(i)[0]+map.get(i)[2]);//搜索下一驾飞机应该安排什么,并把时间传入下一个dfs,时间为飞机起飞时间加下降时间st[i]=false;//还原,取消标记}if(flag) System.out.println("YES");if(!flag) System.out.println("NO");}private static void dfs(int time) {boolean ok=true;//下面for循环中,如果没有再安排飞机,则代表已经成功安排所有飞机for (int i=0;i<n;i++){//枚举飞机if(st[i])continue;//如果已经下降了,不用再安排下降ok=false;if(time>map.get(i)[0]+map.get(i)[1])continue;int is=Math.max(time,map.get(i)[0])+map.get(i)[2];//时间取当前时间和飞机起飞时间最大那个,加上飞机下降时间st[i]=true;//标记dfs(is);//搜索下一驾飞机st[i]=false;//还原标记}if(ok)//代表搜素到答案 直接返回flag=true;return;}
}

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

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

相关文章

计算机vcruntime140_1.dll丢失是什么原因?vcruntime140_1.dll丢失的解决办法如下:

计算机中vcruntime140_1.dll文件丢失的原因可能有多种&#xff0c;以下是一些常见的原因&#xff1a; 安装不完整或损坏&#xff1a;某些应用程序在安装过程中可能因为意外中断、安装程序损坏或其他原因导致vcruntime140_1.dll未能正确安装或复制到系统目录。软件卸载或更新不…

Redis学习(三)缓存

Redis学习&#xff08;三&#xff09;缓存 一、什么是缓存?如何使用缓存 二、添加商户缓存1、缓存模型和思路2、缓存更新策略1、数据库缓存不一致解决方案&#xff1a;2、数据库和缓存不一致采用什么方案 3、实现商铺和缓存与数据库双写一致 三、缓存穿透问题的解决思路1、编码…

软件设计与体系结构

1.简要说明什么是软件体系结构&#xff0c;软件体系结构模型&#xff0c;为什么要建立软件体系结构模型&#xff1f; 答&#xff1a;软件体系结构指一个软件系统在高层次上的结构化组织方式&#xff0c;包括系统的组成部分和各个部分之间的关系&#xff0c;以及它们与环境之间的…

Essential Use Cases和Real Use Cases

在软件开发领域&#xff0c;用例&#xff08;Use Cases&#xff09;是一种非常重要的工具&#xff0c;它能够帮助开发团队、产品经理以及用户之间对系统的功能需求达成一致。用例描述了在特定条件下&#xff0c;系统对用户请求所做出的响应&#xff0c;从而清晰地表达了系统的行…

P102如何降频降压

要对NVIDIA P102显卡进行降频降压操作&#xff0c;可以按照以下步骤进行&#xff1a; • 使用MSI Afterburner软件&#xff1a; • 打开MSI Afterburner&#xff0c;使用曲线编辑器调整频率和电压。竖轴为核心频率&#xff0c;横轴为电压。通过整体下移靠后的频率和电压区域&a…

概率论得学习和整理32: 用EXCEL描述正态分布,用δ求累计概率,以及已知概率求X的区间

目录 1 正态分布相关 2 正态分布的函数和曲线 2.1 正态分布的函数值&#xff0c;用norm.dist() 函数求 2.2 正态分布的pdf 和 cdf 2.3 正态分布的图形随着u 和 δ^2的变化 3 正态分布最重要的3δ原则 3.0 注意&#xff0c;这里说的概率一定是累计概率CDF&#xff0c;而…

HTML5文档元数据详解

HTML5文档元数据详解 在HTML5中&#xff0c;元数据&#xff08;Meta Data&#xff09;是文档头部的重要组成部分&#xff0c;提供了关于网页本身的信息。以下是一些常见的元数据标签及其详细说明。 1. <meta> 标签 <meta>标签用于定义文档的元数据&#xff0c;通…

使用开源在线聊天工具Fiora轻松搭建个性化聊天平台在线交流

文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 今天给大家介绍一款免费开源的在线聊天工具——Fiora。它不仅是一款功能强大的即时通讯软件&#xff0c;更是开发者们展现创造…

pm面试题

你平时都用哪些产品&#xff0c;这些产品好在哪里&#xff0c;不好在哪里&#xff0c;为什么&#xff1f;&#xff08;问到概率50%&#xff09; 把市面上的常见产品进行一个调研来设计一个跨境电商产品&#xff0c;请说明你需要多少费用和什么样的团队&#xff0c;将在一年内将…

VS Code Copilot 与 Cursor 对比

选手简介 VS Code Copilot&#xff1a;算是“老牌”编程助手了&#xff0c;虽然Copilot在别的编辑器上也有扩展&#xff0c;不过体验最好的还是VS Code&#xff0c;毕竟都是微软家的所以功能集成更好一些&#xff1b;主要提供的是Complete和Chat能力&#xff0c;也就是代码补全…

Java Spring Boot 项目中嵌入前端静态资源:完整教程与实战案例

言简意赅的讲解Java Spring Boot 中嵌入前端项目的静态资源解决的痛点 之前给大家讲解了如何部署一个前端项目&#xff0c;但大家还是好奇如何部署一个前后端一体项目。将前端构建后的静态资源嵌入 Java Spring Boot 后端项目&#xff0c;是现代全栈开发中一种流行的实践方式。…

R200推理

一、环境搭建 1.下载镜像 wget https://bj.bcebos.com/klx- public/kdk/project/anyinfer_x86_output/20240316/anyinfer_x86_v5.tar.gz wget https://bj.bcebos.com/klxpublic/kdk/project/anyinfer_x86_output/20240316/anyinfer_x86_v5.tar.gz tar -zxvf a…

RabbitMQ中的Topic模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理&#xff0c;支持多种消息传递模式&#xff0c;其中 Topic 模式 是一种灵活且强大的模式&#xff0c;允许生产者…

可编辑99PPT | 智能工厂整体规划方案及实施细部方案

荐言分享&#xff1a;智能工厂是利用物联网、大数据、人工智能等先进技术&#xff0c;实现生产过程自动化、智能化和柔性化的现代工厂。本整体规划方案旨在通过整合信息技术、自动化技术、人工智能技术和物联网技术&#xff0c;构建一个高效、灵活、绿色、可持续的生产环境&…

Day13 用Excel表体验梯度下降法

Day13 用Excel表体验梯度下降法 用所学公式创建Excel表 用Excel表体验梯度下降法 详见本Day文章顶部附带资源里的Excel表《梯度下降法》&#xff0c;可以对照表里的单元格公式进行理解&#xff0c;还可以多尝试几次不同的学习率 η \eta η来感受&#xff0c;只需要更改学习率…

YOLOv8改进,YOLOv8引入Hyper-YOLO的MANet混合聚合网络+HyperC2Net网络

摘要 理论介绍 MANet 的目标是通过多种卷积操作的协同作用,提高特征提取能力,并加强梯度流动,从而提升模型在不同层次的特征表示和语义深度。MANet 结合了三种卷积变体,通过混合使用它们来提高视觉特征的多样性和信息流动性。 HyperC2Net 的主要目标是通过超图结构对多层次…

Nautilus源码编译傻瓜式教程二

Nautilus源码编译傻瓜式教程一 Nautilus编译 依赖项文件 接上文,点击小锤子进行编译后出现如下的错误提示 看这个报错,未找到文件或目录,再看前面的git地址是github就知道肯定是下载有问题,查找下Nautilus项目,发现在nautilus/build-aux/flatpak/org.gnome.Nautilus.json文件…

Java中使用四叶天动态代理IP构建ip代理池,实现httpClient和Jsoup代理ip爬虫

在本次爬虫项目中&#xff0c;关于应用IP代理池方面&#xff0c;具体完成以下功能&#xff1a; 从指定API地址提取IP到ip池中&#xff08;一次提取的IP数量可以自定义更改&#xff09; 每次开始爬虫前&#xff08;多条爬虫线程并发执行&#xff09;&#xff0c;从ip池中获取一…

CEF127 编译指南 MacOS 篇 - 拉取 CEF 源码(五)

1. 引言 在完成了所有必要工具的安装和配置后&#xff0c;我们进入到获取 CEF 源码的阶段。对于 macOS 平台&#xff0c;CEF 的源码获取过程需要特别注意不同芯片架构&#xff08;Intel 和 Apple Silicon&#xff09;的区别以及版本管理。本文将详细介绍如何在 macOS 系统上获…

梳理你的思路(从OOP到架构设计)_设计模式Factory Method模式

目录 1、Factory Method模式 2、范例&#xff1a; Android FM(工厂)模式 3、Android里处处可见的FM模式的应用 1、Factory Method模式 誰來創建<T>的對象呢?例如&#xff0c; 剛才的Template Method模式內含一個EIT造形&#xff0c;那麼&#xff0c; 請問&#xff…