【蓝桥杯每日一题】扫雷

扫雷

知识点

2024-12-3 蓝桥杯每日一题 扫雷 dfs (bfs也是可行的)

题目大意

在一个二维平面上放置这N个炸雷,每个炸雷的信息有$(x_i,y_i,r_i) $,前两个是坐标信息,第三个是爆炸半径。然后会输入M个排雷火箭,同样的信息;排雷火箭会将范围内所有的炸雷炸掉,并且会引发一连串爆炸这就要根据爆炸半径来判断。

解题思路
  1. 要考虑怎么存储这个炸弹信息,并且还要方便遍历到。在题目中坐标范围是 1 0 9 10^9 109,肯定不能存到二维数组的平面坐标中。
  2. 使用 m a p < p a i r < i n t , i n t > , v e c t o r < i n t > > map<pair<int,int>,vector<int>> map<pair<int,int>,vector<int>>,这样方便以O(1)的时间访问到当前位置,并且题目中明确表示同一个点可能会包含多个炸雷或火箭,(这一点一定看清楚),我就是这一点磕了一下;然后就是一定要使用map来定义,unordered_map我用的不行,应为这里使用到了pair。
  3. 最后就是递归遍历了,没输入一个火箭调用dfs;而且注意到 r 的的范围是很小的,我们就可以通过遍历当前位置为中心向四周扩展 r 长度的正方形,然后找到雷之后还要判断两点之间的距离是否在园内即可。
Accepted
#include <bits/stdc++.h>
using namespace std;const int N = 5e4+10;
typedef long long ll;
typedef pair<int,int> pii;
int n,m,cnt;
map<pii,vector<int>> a;
// 两点之间的距离
ll dist(int x1,int y1,int x2,int y2) {return 1ll*(x1-x2)*(x1-x2) + 1ll*(y1-y2)*(y1-y2);
}void dfs(int x,int y,int r) {for(int i = x-r;i <= x+r;i++) {for(int j = y-r;j <= y+r;j++) {if(a.count({i,j})) {int len = a[{i,j}].size();for(int k = 0;k < len;k++) {int rr = a[{i,j}][k];if(rr > 0 && dist(i,j,x,y) <= 1ll*r*r) {a[{i,j}][k] = 0;cnt++;dfs(i,j,rr);}}}}}
}int main()
{int x,y,r;cin>>n>>m;for(int i = 1;i <= n;i++) {cin>>x>>y>>r;a[{x,y}].push_back(r);}while(m--) {cin>>x>>y>>r;dfs(x,y,r);}cout<<cnt;return 0;
}
备注

欢迎大家一起来备战蓝桥杯。可以私信我加联系方式,人多的话咱就拉个群了。

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

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

相关文章

【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)

Spark 3.x 中的自适应查询执行&#xff08;Adaptive Query Execution&#xff0c;简称 AQE&#xff09;通过多种方式提升性能&#xff0c;主要包括以下几个方面&#xff1a; 动态合并 Shuffle 分区&#xff08;Coalescing Post Shuffle Partitions&#xff09;&#xff1a; 当 …

城电科技 | 光伏景观长廊 打造美丽乡村绿色低碳示范区 光伏景观设计方案

光伏景观长廊是一种结合了光伏发电技术和零碳景观设计的新型公共公共设施&#xff0c;光伏景观长廊顶上的光伏板不仅可以为周边用电设备提供清洁电能&#xff0c;而且还能作为遮阳设施使用&#xff0c;为人们提供一个美丽又实用的休闲娱乐空间。 光伏景观长廊建设对打造美丽乡…

开发系统准备与开发环境配置总结

开发前系统配置及环境搭建 系统配置0 Github打不开、速度慢怎么办1 WSL、Linux、Ubuntu、Docker都是什么鬼2 在Windows下安装WSL和Ubuntu3 配置MySQL4 配置Redis并启动服务5 Docker&#xff08;Windows和Ubuntu下&#xff09;6 Nginx 系统配置 你好&#xff01; 这是你第一次使…

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作&#xff0c;比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);

C++(九)

前言&#xff1a; 本文主要讲述运算符的优先顺序。 一&#xff0c;运算符的优先级。 请看以下表达式&#xff1a; a32*5 运算结果为&#xff1a;13. 可以看到&#xff0c;在此代码中&#xff0c;先运行了2*5的结果&#xff0c;在此基础上在进行3操作&#xff0c;因此结果…

Android 拍照(有无存储权限两种方案,兼容Q及以上版本)

在某些行业&#xff0c;APP可能被禁止使用存储权限&#xff0c;或公司在写SDK功能&#xff0c;不方便获取权限 所以需要有 无存储权限拍照方案。这里两种方案都列出里。 对于写入权限&#xff0c;在高版本中&#xff0c;已经废弃&#xff0c; 不可用文件写入读取权限&#xf…

【Altium Designer 】AD如何使用嘉立创元器件的3D封装

1.下载3D封装 以STM32F407VGT6为例&#xff0c;进入嘉立创商城网站&#xff0c;找到需要的元器件封装 复制编号&#xff0c;打开嘉立创EDA&#xff0c;编译器选择专业版&#xff0c;新建工程&#xff0c;点击PCB1 复制编号在搜索框中&#xff0c;点击搜索&#xff0c;然后放置…

爬虫运行后数据如何存储?

爬虫运行后获取的数据可以存储在多种不同的存储系统中&#xff0c;具体选择取决于数据的规模、查询需求以及应用场景。以下是一些常见的数据存储方法&#xff1a; 1. 文件系统 对于小型项目或临时数据存储&#xff0c;可以直接将数据保存到本地文件中。常见的文件格式包括&…

【机器学习】机器学习的基本分类-监督学习-梯度提升树(Gradient Boosting Decision Tree, GBDT)

梯度提升树是一种基于**梯度提升&#xff08;Gradient Boosting&#xff09;**框架的机器学习算法&#xff0c;通过构建多个决策树并利用每棵树拟合前一棵树的残差来逐步优化模型。 1. 核心思想 Boosting&#xff1a;通过逐步调整模型&#xff0c;使后续的模型重点学习前一阶段…

【机器学习 | 基于Lasso回归和随机森林的上海链家二手房房价预测】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 去除缺失数据2.5 面积、价格、单价、楼层、建筑时间数据提取2.6 朝向数据处理 &#x1f3f3;️‍&#x1f308; 3. 特…

【HarmonyOS NEXT】flexShrink属性

一、背景 希望达到的布局效果是文字与按钮左右对齐&#xff0c;居中显示&#xff0c;但实际效果中按钮的显示与效果不符&#xff0c;如下图所示 二、问题 按钮是用row组件包裹的text&#xff0c;左右padding给的是一样的大小&#xff0c;但是明显右边padding会比左边padding大…

CentOS 7 上安装 MySQL 8.0.40 (二进制安装)

要在 CentOS 7 上安装 MySQL 8.0.40&#xff0c;按照以下步骤操作&#xff1a; 下载安装包。 https://dev.mysql.com/downloads/mysql/ 下载之前查看系统c版本 解压安装包 首先&#xff0c;解压下载的 .tar.xz 安装包。 cd /path/to/your/downloads tar -xvf mysql-8.0…

PHP语法学习(第六天)

&#x1f4a1;依照惯例&#xff0c;回顾一下昨天讲的内容 PHP语法学习(第五天)主要讲了PHP中的常量和运算符的运用。 &#x1f525; 想要学习更多PHP语法相关内容点击“PHP专栏” 今天给大家讲课的角色是&#x1f34d;菠萝吹雪&#xff0c;“我菠萝吹雪吹的不是雪&#xff0c;而…

Python Web 开发:使用 FastAPI 进行依赖注入与异常处理

Python Web 开发&#xff1a;使用 FastAPI 进行依赖注入与异常处理 目录 &#x1f6e0;️ 依赖注入与 FastAPI 高级特性⚠️ 自定义异常类的实现与应用&#x1f6a8; 使用 HTTPException 处理常见错误&#x1f30d; 全局异常处理器的设计与实现⚙️ 异常处理与 API 响应的整合…

免押租赁系统助力资源共享新模式开创便捷租赁体验

内容概要 免押租赁系统&#xff0c;听起来是不是很酷&#xff1f;这个新模式不仅仅是为了让你少花点钱&#xff0c;它的到来简直就是个革命&#xff01;以前&#xff0c;租东西时首先想到的就是那个令人心痛的押金&#xff0c;对吧&#xff1f;但现在&#xff0c;免押租赁系统…

oracle之用户的相关操作

&#xff08;1&#xff09;创建用户(sys用户下操作) 简单创建用户如下&#xff1a; CREATE USER username IDENTIFIED BY password; 如果需要自定义更多的信息&#xff0c;如用户使用的表空间等&#xff0c;可以使用如下&#xff1a; CREATE USER mall IDENTIFIED BY 12345…

第77期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

如何通过自学成长为一名后端开发工程师?

大家好&#xff0c;我是袁庭新。最近&#xff0c;有星友向我提出了一个很好的问题&#xff1a;如何通过自学成为一名后端开发工程师&#xff1f; 为了解答这个疑问&#xff0c;我特意制作了一个视频来详细分享我的看法和建议。 戳链接&#xff1a;如何通过自学成长为一名后端开…

Linux---对缓冲区的简单理解--第一个系统程序

前序&#xff1a; 首先先理解一下什么是回车与换行&#xff1b;回车和换行是两个概念&#xff0c;它们不是一个东西&#xff1b; 回车:光标回到开始&#xff1b;换行:换到下一行&#xff1b; 如下图&#xff1a; 行缓冲区 如何理解缓冲区问题&#xff1f; 可以认为&#xff0…

力扣每日一题-999. 可以被一步捕获的棋子数

题目 给定一个 8 x 8 的棋盘&#xff0c;只有一个 白色的车&#xff0c;用字符 R 表示。棋盘上还可能存在白色的象 B 以及黑色的卒 p。空方块用字符 . 表示。车可以按水平或竖直方向&#xff08;上&#xff0c;下&#xff0c;左&#xff0c;右&#xff09;移动任意个方格直到它…