飞机降落
题目链接: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;
}

浙公网安备 33010602011771号