蓝桥杯2023年第十四届省赛真题-飞机降落

题目 3151: 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 (dotcpp.com)

蓝桥杯2023年第十四届省赛真题-飞机降落

时间限制: 3s 内存限制: 320MB 提交: 17789 解决: 4819

题目描述

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。

复制代码
#include<iostream>
#include<cstring>
#include<queue> 
using namespace std;
const int N=15;
bool st[N];
bool find_solve;
int n;
struct {
	int ti;
	int di;
	int li;	
}p[N];

void dfs(int t,int next_time){
	if(t>n){
		find_solve=true;
		return;
	}
	
	for(int i=1;i<=n;i++){
		if(!st[i]){
		st[i]=true;
		int t1=p[i].ti;
		int t2=p[i].ti+p[i].di;
		int time;
		if(t1>=next_time)time=t1;
		else time=next_time;
		if(time>t2){st[i]=false;return;}
		int t3=time+p[i].li;
		dfs(t+1,t3);
		st[i]=false;
		}
	}
	
}

void slove(){
	scanf("%d",&n);
	find_solve=false;
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d %d",&p[i].ti,&p[i].di,&p[i].li);
		st[i]=false;	
	}
	
	dfs(1,0);
	if(find_solve)printf("YES\n");
	else printf("NO\n");
	
}

int main(){
int t;scanf("%d",&t);
while(t--)slove();	
}
相关推荐
Swift社区2 小时前
LeetCode 410 - 分割数组的最大值
算法·leetcode·职场和发展
Emilia486.17 小时前
【Leetcode&nowcode】代码强化练习(二叉树)
算法·leetcode·职场和发展
墨染点香17 小时前
LeetCode 刷题【135. 分发糖果】
算法·leetcode·职场和发展
云青山水林19 小时前
零基础如何准备蓝桥杯
蓝桥杯
熬了夜的程序员1 天前
【LeetCode】90. 子集 II
数据结构·算法·leetcode·链表·职场和发展·排序算法
熬了夜的程序员1 天前
【LeetCode】91. 解码方法
算法·leetcode·链表·职场和发展·排序算法
熬了夜的程序员2 天前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵
程序员杰哥2 天前
Pytest之收集用例规则与运行指定用例
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest