*【每日一題 基礎題】 [藍橋杯 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.pswp.cn/web/63814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63814.shtml
英文地址,請注明出處:http://en.pswp.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…