飞机降落

题目链接:https://www.luogu.com.cn/problem/P9241

题意:

n架飞机,给出每一个飞机初始可降落时间t,降落花费的时间l,最终可降落时间d,求能否全部降落

思路:

暴力DFS

struct node{
	int t,d,l;
};
int n;
vector<node>a;
int ok=0;
void dfs(int now,int cnt,vector<int>&vis){
	if(ok)return;

	if(cnt==n){
		ok=1;return;
	}
	for(int i=1;i<=n;i++){
		if(vis[i])continue;
		if(now>a[i].t+a[i].d)return;
		int temp=now;
		if(now<a[i].t)now=a[i].t;
		now+=a[i].l;
		
		vis[i]=1;
		dfs(now,cnt+1,vis);
		now=temp;
		vis[i]=0;
		
	}
}
void solve(){
	cin>>n;
	a.resize(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i].t>>a[i].d>>a[i].l;
	}
	ok=0;
	vector<int>vis(n+1);
	for(int i=1;i<=n;i++){
		int now=0;
		int temp=now;
		if(now<a[i].t)now=a[i].t;
		now+=a[i].l;
		
		vis[i]=1;
		dfs(now,1,vis);
		vis[i]=0;
		
		now=temp;
	}
	
	if(ok)cout<<"YES"<<endl;else cout<<"NO"<<endl;
}
posted @ 2025-04-11 17:12  Marinaco  阅读(13)  评论(0)    收藏  举报
//雪花飘落效果