蓝桥杯 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;
}
相关文章:
蓝桥杯 9241.飞机降落
这道题本来作者以为是可以用一些小技巧进行暴力解法的,但是后来试了一下,不能过去全部数据。 下面是对半个的题解: #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…...
数据可视化原理-腾讯-散点图
在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…...
深度学习-Pytorch实现经典AlexNet网络:山高我为峰
深度学习-Pytorch实现经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰…...
25考研习题记录
3月 汤家凤《1800》 基础篇 日期高等数学线性代数概率论3.1 P92-93 P212-214 3.4 P10-15 P10-19 极限题62题 P73-74 P170-172 行列式17题 考研竞赛凯哥每日一题 张宇高数30讲页数3.4P74...
上海计算机学会 2023年12月月赛 丙组T4 迷宫(宽度优先搜索)
第四题:T4迷宫 标签:宽度优先搜索题意:给定 n n nx m m m由 # \# #(墙)、 . . .(空地)组成的地图,求从左上角到右下角的最少步数,每次只允许上下左右移动一格࿰…...
【Boost搜索引擎项目】Day1 项目介绍+去标签和数据清洗框架搭建
🌈欢迎来到C项目专栏 🙋🏾♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mysq…...
站群服务器需要多大内存
站群服务器的内存需求取决于网站的数量和流量,以及服务器需要运行的应用和服务。RAKsmart小编为您整理发布站群服务器需要多大内存以及站群服务器内存需求的考虑因素。 站群服务器是一种用于托管多个网站的服务器,通常用于搜索引擎优化(SEO)和网络内容管…...
HTB Perfection
Perfection User Namp ┌──(kali㉿kali)-[~/HTB/machine/Perfection] └─$ nmap -A 10.129.226.58 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-03 21:10 EST Nmap scan report for 10....
如何远程连接MySQL数据库?
在现代互联网时代,远程连接MySQL数据库成为了许多开发者和管理员必备的技能。这不仅方便了数据的共享和管理,还可以使多个团队在全球范围内协同工作。本文将介绍如何通过天联组网实现远程连接MySQL数据库,并实现高效的信息远程通信。 天联组网…...
【 HTML 及浏览器 】前端跨页面通信
前端跨页面通信:连接分散界面的纽带 在构建复杂的前端应用时,我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面,通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法,并提…...
内存安全的编程语言
美国政府新颁布《回归基础构件:通往安全软件之路》 《回归基础构件:通往安全软件之路》中,白宫国家网络主任办公室(ONCD)呼吁开发者使用「内存安全的编程语言」 内存安全的编程语言 根据NSA的建议,内存…...
Excel常用公式总结非常实用
16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域) 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…...
window路径特殊字符解决
官方定义命名规范 https://learn.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file 重点 1.目录规范 特殊字符以空格 与点.开头结尾 2.文件规范 特殊字符以空格 与点.开头结尾NUL、COM等文件 解决方案 字符标点符号实际上在字符集定义中有一个很有趣的现象&…...
『大模型笔记』RAG 系统开发中的12大痛点及解决方案
RAG 系统开发中的12大痛点及解决方案 文章目录 问题引入一. 痛点 1:缺失内容1.1. 数据清洗的重要性1.2. 精心设计的提示(Prompt)有助于提高准确性二. 痛点 2:关键文档被遗漏2.1. 通过调整 chunk_size 和 similarity_top_k 参数优化检索效果2.2. 检索结果的优化排序三. 痛点…...
VScode---php环境搭建
文章目录 1.下载php Dehug;php server2.下载php环境3.配置环境变量5.配置php.ini文件6.设置vscode6.测试遇到的问题 1.下载php Dehug;php server 2.下载php环境 下载地址:https://www.php.net/downloads.php 3.配置环境变量 C:\Users\hacker>php -v PHP 8.3.3 (…...
【Vue3】3-6 : 仿ElementPlus框架的el-button按钮组件实
文章目录 前言 本节内容实现需求完整代码如下: 前言 上节,我们学习了 slot插槽,组件内容的分发处理 本节内容 本小节利用前面学习的组件通信知识,来完成一个仿Element Plus框架的el-button按钮组件实现。 仿造的地址:uhttps://…...
.datastore@cyberfear.com.mkp勒索病毒的最新威胁:如何恢复您的数据?
导言: 我们享受着数字化带来的便利,但同时也要面对不断演进的网络威胁。最近出现的 .datastorecyberfear.com.mkp、[hendersoncock.li].mkp [hudsonLcock.li]、.mkp [myersairmail.cc].mkp 勒索病毒就是其中之一,它对我们的数据安全构成了…...
23.基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文PPT)
项目介绍 本旅游网站系统采用的数据库是MYSQL ,使用 JSP 技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…...
SpringCloud-RabbitMQ消息模型
本文深入介绍了RabbitMQ消息模型,涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景,为开发者提供了灵活而强大的消息传递工具。通过这些模型,RabbitMQ实现了解耦、异步通信以及高…...
Linux网络编程 ——UDP 通信
Linux网络编程 ——UDP 通信 1. UDP1.1 UDP 通信1.2 广播1.3 组播(多播) 2. 本地套接字 1. UDP 1.1 UDP 通信 输入 man 2 sendto 查看说明文档 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf…...
2026 AI 培训机构怎么选?6 类人群精准匹配 + 避坑指南
随着大模型、多模态、RAG、Agent 技术持续迭代,企业对于 AI 算法开发、计算机视觉、自然语言处理、工程落地类人才的需求持续上涨。目前国内主流AI学习平台包含咕泡科技、科大讯飞AI大学堂、腾讯云智学堂、深兰科技人工智能教育等,各家平台技术侧重点、课…...
保姆级教程:用HWSD世界土壤数据库为SWAT模型快速搭建土壤库(附SPAW软件计算避坑指南)
从HWSD到SWAT:零基础构建高精度土壤数据库的完整指南 水文模型研究者常面临一个棘手问题:如何将全球土壤数据转化为模型可用的参数?HWSD(Harmonized World Soil Database)作为国际权威土壤数据库,与SWAT模…...
Spring Boot项目升级FastJson2踩坑记:三个依赖缺一不可,附完整配置代码
Spring Boot项目升级FastJson2实战指南:从依赖管理到配置优化 最近在重构一个老项目时,我决定将FastJson1升级到FastJson2版本。本以为只是简单修改下依赖版本号就能搞定,结果却遭遇了各种"类找不到"的报错。经过两天折腾和源码研…...
高通8650 AudioReach实战:手把手调试GSL-Passthru-GPR数据流(附动态调试脚本)
高通8650 AudioReach实战:GSL-Passthru-GPR数据流调试全指南 当你在深夜的实验室里盯着示波器上那条毫无波动的音频信号线时,手机突然响起一阵刺耳的电流噪声——这可能是每位音频驱动工程师都经历过的噩梦时刻。高通AudioReach架构作为现代移动音频系统…...
BinaryBomb通关后,我总结了这6个Linux调试与逆向的‘骚操作’
BinaryBomb通关后,我总结了这6个Linux调试与逆向的‘骚操作’ 在计算机系统基础课程中,BinaryBomb实验堪称是检验学生调试与逆向能力的"试金石"。作为一位刚刚通关的"拆弹专家",我想分享那些教科书上不会教、却能让你效率…...
如何用250美元构建开源机器人手臂:低成本机器人学习平台技术解析
如何用250美元构建开源机器人手臂:低成本机器人学习平台技术解析 【免费下载链接】low_cost_robot 项目地址: https://gitcode.com/GitHub_Trending/lo/low_cost_robot 在机器人学习和自动化研究领域,高昂的设备成本一直是阻碍创新和普及的主要障…...
OpenRGB终极指南:一个软件统一管理所有RGB设备,告别多软件混乱
OpenRGB终极指南:一个软件统一管理所有RGB设备,告别多软件混乱 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgramm…...
开源项目治理:ECC 社区贡献指南与协作模式
作者注:本文基于 ECC 项目的开源治理实践,帮助中国开发者理解如何参与大型开源项目并建立有效的协作流程。项目开源地址:github.com/affaan-m/ECC摘要 ECC(Everything Claude Code)是一个拥有 170 贡献者、28K Forks 的…...
收藏!2026大模型风口来了,小白程序员如何抓住高薪机会?必看!
文章指出2026年是技术红利年,大模型领域竞争格局变化明显。国内开源模型如DeepSeek、GLM等取得巨大进展,领先全球。从业者待遇提升,应届生薪酬普遍破百万。招聘方更看重新技能,如万亿MoE、Agent等。文章强调AGI的核心是通用性&…...
安全自动化工具:自动化安全检测和响应
安全自动化工具:自动化安全检测和响应 一、安全自动化工具概述 1.1 安全自动化工具的定义 安全自动化工具是指用于自动化执行安全检测、响应和管理任务的软件工具。它通过自动化脚本和智能算法,提高安全运营效率,降低人为错误风险。 1.2 安全…...
