当前位置: 首页 > news >正文

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

题目描述

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

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

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

输入格式

输入包含多组数据。

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

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

以下 N 行,每行包含三个整数 Ti​,Di​,Li​。

输出格式

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

#include <bits/stdc++.h>
using namespace std;

const int N=1e5+5;
int a[N],b[N],c[N],t[N];
bool v[N];
int n;

bool dfs(int i,int cur) {
	if(i==n) return 1;
	for(int j=0;j<n;j++){
		if(!v[j] && cur<=a[j]+b[j]){
			v[j]=1;
			if(dfs(i+1,max(a[j],cur)+c[j])) return 1;;
			v[j]=0;
		}
	}
	return false;
}

int main() {
    int t;cin>>t;
    while(t--){
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>a[i]>>b[i]>>c[i];
			v[i]=0;
		}
		cout<< (dfs(0,0) ? "YES" : "NO") <<endl;
	}
    return 0;
}

v[i] 用于标记当前 DFS 路径中是否已被选择

从时间 0 开始 (cur=0)

检查当前时间 cur 是否小于等于飞机 j 的截止时间 (a[j] + b[j])

更新时间:max(a[j], cur) + c[j](飞机降落不能早于 a[j],且需要 c[j] 的持续时间)

v[j]=0;回溯并尝试其他可能性

http://www.dtcms.com/a/121647.html

相关文章:

  • 售货机管理系统:智慧零售时代的运营新引擎
  • Android开发鸿蒙环境问题记录
  • LangChain4j实现rag
  • SQL解析器:实现进阶功能
  • IAR推动嵌入式开发:云就绪、可扩展的CI/CD和可持续自动化
  • 青少年编程考试 CCF GESP Python七级认证真题 2025年3月
  • CCF GESP Python编程 四级认证真题 2025年3月
  • ngx_array_create
  • python之安装PaddlePaddle和PaddleX解析pdf表格
  • WPF轮播图动画交互 动画缩放展示图片
  • Leetcode 跳跃游戏 II (贪心算法)
  • openfga原理及简单落地方案设计
  • Java——pdf增加水印
  • 每日一题(小白)暴力娱乐篇23
  • 如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理
  • 「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
  • 企业资源计划(ERP)系统:数字化转型的核心引擎
  • DFS--
  • 防止黑客篡改数据,Java整合SHA-256算法数字摘要的应用
  • 编译好的sentry SDK以及sentry-cli上传pdb文件
  • 走进底层 - JVM工作原理入门指南
  • 大模型备案语料安全要求解析
  • 2025.04.09【Sankey】| 生信数据流可视化精讲
  • LeetcodeBST2JAVA
  • 卡牌收集者1.0
  • JMH 基准测试实战:Java 性能对比的正确打开方式!
  • sqlite3基本语句
  • BUUCTF-web刷题篇(17)
  • Three.js 入门实战:安装、基础概念与第一个场景⭐
  • go语言应该如何学习