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

2023蓝桥省赛B组 B题 飞机降落 题解

标准深搜板子题,难度不大

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define MAX 10
struct node{
    int t,d,l;//t:飞机到达时间 d:飞机最大盘旋时间 l:飞机降落所需时间
    bool v;//标记此架飞机是否被搜索过 用于剪枝
};
node p[MAX];
int t,n;//t:样例数 n:飞机数
bool dfs(int k,int time){//k:当前搜索到的飞机架数 time:上一架飞机实际降落时间
    if(k==n) return 1;
    for(int i=0;i<n;i++){
        if(!p[i].v&&p[i].t+p[i].d>=time){
            /*剪枝:1.进入搜索的飞机必须是未被搜索过的飞机
            2.飞机到达时间与最大盘旋时间之和必须不早于上一架飞机实际降落时间
            */
            p[i].v=1;
            if(dfs(k+1,max(time,p[i].t)+p[i].l)) return 1;//若向下递归所有飞机均返回1 此处才能返回1
            p[i].v=0;//回溯
        }
    }
    return 0;//若向下递归时只要有1架飞机不符合要求 则返回0
}
int main(){
    cin>>t;
    while(t--){
        memset(p,0,sizeof p);
        cin>>n;
        for(int i=0;i<n;i++) cin>>p[i].t>>p[i].d>>p[i].l;
        if(dfs(0,0)) cout<<"YES"<<endl;//从第0架飞机开始搜索
        else cout<<"NO"<<endl;
    }
    return 0;
}
相关推荐
亿秒签到几秒前
第六届传智杯程序设计国赛B组T4·小苯的字符串染色
数据结构·算法·传智杯
chao189844几秒前
基于字典缩放的属性散射中心参数提取算法与MATLAB实现
开发语言·算法·matlab
小尧嵌入式5 分钟前
【Linux开发四】Linux中概念|MobaXterm和Filezilla软件使用|线程|互斥锁|读写锁
linux·运维·服务器·开发语言·数据结构
a努力。6 分钟前
Spring Boot 4 全面拥抱 Jackson 3
java·运维·开发语言·spring boot·后端·spring·jenkins
石去皿7 分钟前
大厂AI算法面试题汇总
人工智能·算法
晚霞的不甘14 分钟前
Flutter for OpenHarmony 布局探秘:从理论到实战构建交互式组件讲解应用
开发语言·前端·flutter·正则表达式·前端框架·firefox·鸿蒙
爱吃大芒果16 分钟前
Flutter for OpenHarmony核心组件学习: MaterialApp、Scaffold 两大基础组件以及有无状态组件
开发语言·学习·flutter
晚风吹长发19 分钟前
初步了解Linux中的信号保存和简单使用
linux·运维·服务器·数据结构·后端·算法
做科研的周师兄23 分钟前
【MATLAB 实战】栅格数据一元线性回归计算(NDVI 趋势分析)| 附完整可运行代码
开发语言·matlab·线性回归
AndrewHZ23 分钟前
【图像处理与ISP技术】图像格式与存储原理
图像处理·算法·isp·图像压缩·图像格式·图像存储·图像信号处理