蓝桥杯 9241.飞机降落

这道题本来作者以为是可以用一些小技巧进行暴力解法的,但是后来试了一下,不能过去全部数据。

下面是对半个的题解:

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<map>
#include<limits.h>
#include<set>
#define MAX 105
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef long long LL;
int n, m, counts=0;
LL A, B;
int res = 0;
struct fly {int times;int pan_xuan;int down;
};
fly a[MAX];
bool cmp(fly a, fly b) {return a.times + a.pan_xuan <= b.times + b.pan_xuan;
}
int main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n;int i = 0;while (n--){i = 0;cin >> m;while (m--) {int t, d, l;cin >> t >> d >> l;a[i].times = t;a[i].pan_xuan = d;a[i].down = l;i++;}sort(a, a + i, cmp);int flag = 1;int sum = 0;_for(j, 0, i) {if (j == 0)sum += a[j].times + a[j].down;else {if (sum <= a[j].times + a[j].pan_xuan) {sum += a[j].down;}else{flag = 0;break;}}}if (flag)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}

作者这里犯了一个错误:每一个飞机都有可能是第一个降落的飞机,作者一开始认为是时刻上谁最早谁就先降落,结果并不是那个样子。后面的大体思路其实是正确的。

那么后来就与大佬们讨论一下,发现这个题也是一道DFS的暴力题。

OK,废话不多说,那就开始;

注意这里作者认为,方便的话可以定义结构体进行题解。如果我们开3个数组处理起来会很麻烦。

1.我们看到,有飞机到达的时刻,和盘旋的时间,也就是可以等待的时间,最后就是降落的时间。我们可以得出来什么结论呢?刚开始,我们就可以知道飞机的最早降落时间和最晚降落时间(最早降落时间就是它到达飞机场的时刻,最晚降落时间就是到达时刻加上盘旋的时间),只要飞机在这个时间段之内就可以降落,也就是说,如果第i架飞机想要降落,首先需要知道前面得i-1架飞机降落后总共用到的时间。如果说是在这个时间范围里,那么这个飞机就可以降落;否则不行。

2.我们开始考虑。因为每一架飞机都有可能是第一架飞机的降落,所以这就涉及到一个排序问题了。也就是说,我们可以把这个问题转化为排序型递归的题目。那么,就需要有一个状态函数来判断是否选过这个飞机。OK,那么我们套上模板。终止条件就是当我们遍历到最后一架飞机的时候就可以说是YES了。

有人问,不对呀,不应该是大于飞机的架数才可以吗?假设我们需要降落三架飞机,如果前两架都已经降落了,我们还需要再判断第三架吗?因为第三架都已经是最后一架飞机了,所以我们直接就可以认为这种可能性是可以的。

3.不要忘记,我们只是对于一个飞机深度搜索,我们需要从每一个飞机为起点这样才能覆盖到所有可能性。

注意:在dfs函数中,将要进行递归的时候我用了一个if else语句。这里为什么这样判断呢?你想一下,如果说我们前几架飞机的降落时间还没有下一架飞机的开始时刻多,那么也就是说,我们需要等到下架飞机最早下降的时刻才能进行降落;如果说在下一架飞机的那个允许时间范围内,我们就可以直接接着刚刚已经用过的时间加上下架飞机的降落时间了。

上代码:

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<map>
#include<limits.h>
#include<set>
#define MAX 15
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef long long LL;
int n, m, counts=0;
LL A, B;
int res = 0;
int st[MAX];
bool flag = false;
struct fly {int times;int pan_xuan;int down;
};
fly a[MAX];
void dfs(int nums, int times) {if (nums == m) {flag = true;return;}for (int i = 1; i <= m; i++) {if (!st[i] && times > a[i].times + a[i].pan_xuan)return;if (!st[i] && times <= a[i].times + a[i].pan_xuan) {st[i] = 1;if (a[i].times > times)dfs(nums + 1, a[i].times + a[i].down);elsedfs(nums + 1, times + a[i].down);st[i] = 0;}}
}
int main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n;while (n--) {cin >> m;flag = false;_for(i, 1, m + 1) {cin >> a[i].times >> a[i].pan_xuan >> a[i].down;}_for(j, 1, m + 1) {st[j] = 1;dfs(1, a[j].times + a[j].down);st[j] = 0;}if (flag)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握 Python: 每个开发人员都应该知道的6个秘密技巧

无论你是一名经验丰富的开发者还是刚踏入编程世界的新手&#xff0c;Python 很可能已经引起了你的兴趣。 它功能强大、灵活多变&#xff0c;而且非常用户友好&#xff01;但是&#xff0c;让我们更进一步吧! 在这篇博客中&#xff0c;我将揭示一些隐藏的 Python 技巧&#xff0…

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打印"hello wolrd" 3.记录 &#xff08;1&#xff09;创建一个新工程&#xff1a; 新建好一个工程存放文件夹&#xff08;路径不能有中文&#xff09;,然后按下图配置 &#xff08;2&#xff09;点击widgets.ui拖入以…

AIGC时代,程序员副业的必修课【提供免费指导,手把手实践】

给自己的新课做个宣传&#xff0c;限时6折&#xff0c;感兴趣的可以听一听&#xff0c;完全干货。提供课程购买订单&#xff0c;可免费获得21天从0到1全程上站指导。 《AIGC时代&#xff0c;程序员副业的必修课》 AIGC时代的到来&#xff0c;又是一个程序员的副业赚钱的好机会…

真香定律!我用这种模式重构了第三方登录

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 老猫的设计模式专栏已经偷偷发车了。不甘愿做crud boy&#xff1f;看了好几遍的设计模式还记不住&#xff1f;那就不要刻意记了&#xff0c;跟上老猫的步伐&#xff0c;在一个个有趣的职场故事中领悟设计模…

improve-echarts饼图自适应(分辨率放大缩小)

1.echarts 本身存在放大缩小图表不变的情况&#xff0c;要求要图表适应分辨率&#xff0c;根据分辨率放大缩小来进行适应与响应式。 饼图 <!-- 饼状 --><div class"leftrcyle"><div class"ciclye"><div id"cicly" class&q…

2023人机交互期末复习

考试题型及分值分布 1、选择题&#xff08;10题、20分&#xff09; 2、填空题&#xff08;10题、20分&#xff09; 3、判断题&#xff08;可选、5题、10分&#xff09; 4、解答题&#xff08;5~6题、30分&#xff09; 5、分析计算题&#xff08;1~2题、20分&#xff09; 注意&…

PHP+MySQL实现后台管理系统增删改查之够用就好

说明 最近要给博客弄个后台&#xff0c;不想搞得很复杂&#xff0c;有基本的增删改查就够了&#xff0c;到网上找了一圈发现这个不错&#xff0c;很实用&#xff0c;希望可以帮到大家&#xff0c;需要的朋友评论区留下邮箱&#xff0c;我安排发送。 演示效果 项目介绍 本项目…

Jetty使用入门

Jetty使用入门 社区当前推荐开发者使用Jetty 12.X版本。 依据End of Community Support for Jetty 9.x - June 2022&#xff0c;社区对Jetty 9.x的支持&#xff0c;已在2022年6月1日停止。 依据End of Community Support for Jetty 10 / Jetty 11 - January 2024&#xff0c;…

带使能控制的锂电池充放电解决方案

一、产品概述 TP4594R 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC&#xff0c;为锂电池的充放电提供完整的单芯片电源解决方案。 TP4594R 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块…

关于python函数参数传递

参数传递 在 python 中&#xff0c;类型属于对象&#xff0c;对象有不同类型的区分&#xff0c;变量是没有类型的&#xff1a; 在下面的代码示例重&#xff0c;[1,2,3] 是 List 类型&#xff0c;“qayrup” 是 String 类型&#xff0c;而变量 a 是没有类型&#xff0c;它仅仅…

#WEB前端

1.实验&#xff1a;vscode安装&#xff0c;及HTML常用文本标签 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; &#xff08;1&#xff09;网页直接搜索安装vscode &#xff08;2&#xff09;打开vscode&#xff0c;在下图分别安装以下插件&#xff1a; Html Css Support …

C++11线程同步之互斥锁

C11线程同步之互斥锁 std::mutex成员函数线程同步 std::lock_guardstd::recursive_mutexstd::timed_mutex 进行多线程编程&#xff0c;如果多个线程需要对同一块内存进行操作&#xff0c;比如&#xff1a;同时读、同时写、同时读写对于后两种情况来说&#xff0c;如果不做任何的…

《互联网的世界》第四讲-拥塞控制与编码

需要澄清的一个误区是&#xff0c;拥塞绝不是发送的数据量太大导致&#xff0c;而是数据在极短的时间段内到达了同一个地方以至于超过了网络处理容量导致&#xff0c;拥塞的成因一定要考虑时间因素。换句话说&#xff0c;拥塞由大突发导致。 只要 pacing&#xff0c;再多的数据…

2024.3.4训练记录(8)

文章目录 CF 459D Pashmak and Parmidas problemCF 1388C Uncle Bogdan and Country HappinessCF 1525D ArmchairsCF 220B Little Elephant and Array CF 459D Pashmak and Parmida’s problem 题目链接 最近感觉对数据结构题的反应度提升了&#xff0c;这一题是上午看的但是…

动态规划(算法竞赛、蓝桥杯)--树形DP树形背包

1、B站视频链接&#xff1a;E18 树形DP 树形背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int n,V,p,root; int v[N],w[N]; int h[N],to[N],ne[N],tot; //邻接表 int f[N][N];void add(int a,int b){to[tot]b;ne[tot]h[a];h[a…

数仓项目6.0(一)

尚硅谷大数据项目【电商数仓6.0】企业数据仓库项目_bilibili 数据流转过程 用户➡️业务服务器➡️数据库存储➡️数仓统计分析➡️数据可视化 数据仓库处理流程&#xff1a;数据源➡️加工数据➡️统计筛选数据➡️分析数据 数据库不是为了数据仓库服务的&#xff0c;需要…

B084-SpringCloud-Zuul Config

目录 zuul系统架构和zuul的作用zuul网关实现配置映射路径过滤器 Config概述云端管理本地配置 zuul zuul是分布式和集群后前端统一访问入口 系统架构和zuul的作用 zuul把自己注册进eureka&#xff0c;然后可通过前端传来的服务名发现和访问对应的服务集群 为了预防zuul单点故…

Java 枚举类的深入理解与应用

Java 的枚举类是一种特殊的类&#xff0c;通常表示一组常量。在编译或设计时&#xff0c;当我们知道所有变量的可能性时&#xff0c;尽量使用枚举类型。本文将通过一个具体的例子&#xff0c;深入探讨 Java 枚举类的定义、使用和高级特性。 目录 枚举类的定义与使用枚举类的构造…

【OJ】求和与计算日期

文章目录 1. 前言2. JZ64 求123...n2.1 题目分析2.2 代码 3. HJ73 计算日期到天数转换3.1 题目分析3.2 代码 4. KY222 打印日期4.1 题目分析4.2 代码 1. 前言 下面两个题目均来自牛客&#xff0c;使用的编程语言是c&#xff0c;分享个人的一些思路和代码。 2. JZ64 求123…n …

Vue 赋值后原数据随赋值后的数据的变化而变化

很常见的&#xff0c;当我们直接用“”号等方式直接赋值后 原数据会随赋值后的数据的变化而变化 但是有时候我们的需求是不需要原数据跟随变化 所以怎么解决呢&#xff1f; 解决办法有&#xff1a; 1.使用Object.assign() 方法 2.使用深拷贝函数 JSON.parse() 3.使用第三方库lo…