【蓝桥杯每日一题】4.1 奶酪

我天!哥们经过两个周的忙碌又重生了!

原题链接:528. 奶酪 - AcWing题库

本题注意点:

  • 注意几个边界值,如果说没有球连接顶部或者底部,老鼠是不可能上来的,直接say no!
  • 要利用公式判断两个球是相切or相交 ,相离是没有可能的,也是直接say no!
  • 主要距离公式:
    d i s t = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + ( z 1 − z 2 ) 2 {dist}= \sqrt{ (x_1 - x_2)^2 + (y_1 - y_2)^2 + (z_1 - z_2)^2 } dist=(x1x2)2+(y1y2)2+(z1z2)2

看题目的大意,有点像查找最小连通图的影子,现在先用并查集解决问题:

解法1:并查集

时间复杂度: T ( n 2 ) T(n^2) T(n2),运行时间753ms

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;int t;
int p[N];
int n,h,r;struct Spot{ll x,y,z;
}a[N];int find(int x){if(p[x]!=x) {p[x]=find(p[x]);}return p[x];   
}int judge(ll x1,ll x2,ll y1,ll y2,ll z1,ll z2,ll r)//判断两个空洞是否有交集
{return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)<=(4*r*r)?1:0;
}void merge(int x,int y){p[find(x)]=find(y);
}
int main()
{scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&h,&r);for(int i=1;i<=n;i++){a[i].x=a[i].y=a[i].z=0;    //一定要清空数组p[i]=i;  //并查集初始化}//0代表奶酪底部,1001代表奶酪顶部p[0]=0,p[1001]=1001;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].y>>a[i].z;if(a[i].z-r<=0){   //空洞最低点在奶酪外或与奶酪相切,与底部合并merge(i,0);}if(a[i].z+r>=h){//同理,最高点在奶酪外或相切,与顶部合并merge(i,1001);}}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(judge(a[i].x,a[j].x,a[i].y,a[j].y,a[i].z,a[j].z,r)){//有交集就合并merge(i,j);}}}if(find(0)==find(1001)) printf("Yes\n");//底部和顶部相连通即根节点相同else printf("No\n");}return 0;
}

解法2:dfs(深度优先搜索)

主要思想:用空间换取时间

AC 代码:

//利用dfs
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;int t;
int vis[N];
int found; //用于插眼
int n,h,r;struct Spot{ll x,y,z;
}a[N];int judge(ll x1,ll x2,ll y1,ll y2,ll z1,ll z2,ll r){return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)<=(4*r*r)?1:0;
}
void dfs(int m){if(a[m].z+r>=h){//递归出口,即搜到顶端found=1;return;}vis[m]=1;//标记走过for(int i=1;i<=n;i++){if(!vis[i]&&judge(a[i].x,a[m].x,a[i].y,a[m].y,a[i].z,a[m].z,r)){//没有访问且两个空洞有交集,继续搜索dfs(i);}}
}
int main(){cin>>t;while(t--){found=0;    //初始化for(int i=1;i<=n;i++){a[i].x=a[i].y=a[i].z=0;    //一定要清空数组}memset(vis,0,sizeof(vis));cin>>n>>h>>r;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].y>>a[i].z;}for(int i=1;i<=n;i++){if(!vis[i]&&a[i].z<=r){//没有访问过并且和底部相连通,即dfs入口dfs(i);}if(found==1)break;}if(found==1) printf("Yes\n");else printf("No\n");}return 0;
}

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

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

相关文章

零基础轻松入门Java数据库连接(JDBC)

什么是JDBC&#xff1f; Java数据库连接&#xff08;JDBC&#xff09;就像是Java程序和数据库之间的翻译官。它是一个官方的标准接口集&#xff0c;让Java程序能和不同的数据库“对话”。甭管你是在跟MySQL、Oracle还是SQL Server打交道&#xff0c;只要有了JDBC&#xff0c;J…

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 本例程运行环境为CentOS7&…

AI创业机会的探索

AI创业机会的探索 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已成为当今世界的重要技术之一。AI的广泛应用不仅改变了我们的生活方式&#xff0c;也为创业者带来了前所未有的机会。以下&#xff0c;我们将一起探讨AI领域中的一些创业机会。 一、智能…

JS详解-函数柯里化

简介&#xff1a; 柯里化&#xff08;Currying&#xff09;是一种关于函数的高阶技术。柯里化是一种函数的转换&#xff0c;它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。柯里化不会调用函数。它只是对函数进行转换。 举个例子&#xff1a; 已最简单的…

图像处理入门 3(how to get the pixel pitch / 如何获得单个像素的尺寸)

在这里一节里面&#xff0c;将记录如何获得一个相机传感器中单个像素点的尺寸&#xff0c;为了实现不同相机照片之间的匹配。 如果我们知道了相机传感器的尺寸和分辨率的大小&#xff0c;自然就可以求出单个像素的大小。 在这里插入图片描述&#xff1a; 如何获得相机传感器的…

Redis 怎么发布订阅

在Redis中&#xff0c;发布-订阅模式&#xff08;Pub/Sub&#xff09;允许客户端&#xff08;订阅者&#xff09;订阅频道&#xff0c;并接收其他客户端&#xff08;发布者&#xff09;发送到该频道的消息。下面是如何在Redis中使用发布-订阅模式的简要说明&#xff1a; 订阅频…

C++多线程:async、future、packaged_task、promise、shared_future的学习与使用(九)

1、异步任务线程 异步线程的概念&#xff1a; 异步&#xff1a;就是非同步&#xff0c;同步就是必须一个一个的执行&#xff0c;异步可以两个事情一起干异步线程&#xff1a;异步线程就相当于把非关联的两件事分开找两个线程去执行&#xff0c;而分开的那个就是异步线程举例&am…

06-kafka配置

生产者配置 NAMEDESCRIPTIONTYPEDEFAULTVALID VALUESIMPORTANCEbootstrap.servershost/port列表&#xff0c;用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,…&#xff0c;无需添加所有的集群地址&#xff0c;kafka会根据提供的地址发现其他的地址&…

golang设计模式图解——模板方法模式

设计模式 GoF提出的设计模式有23个&#xff0c;包括&#xff1a; &#xff08;1&#xff09;创建型(Creational)模式&#xff1a;如何创建对象&#xff1b; &#xff08;2&#xff09;结构型(Structural )模式&#xff1a;如何实现类或对象的组合&#xff1b; &#xff08;3&a…

FastAPI Web框架教程 第13章 WebSocket

13-1 WebSocket是什么 WebSocket简介&#xff1a; WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。 在WebSocket API中&#xff0c;浏览器和服务器只需要完成一…

【JavaSE】反射

Java代码的生命周期 Java代码在计算机中经历的阶段&#xff1a;Source源代码阶段、Class类对象阶段、RunTime运行时阶段。 Source源代码阶段: 这个阶段是由程序员编写生成源代码,再由Javac编译器生成class文件。 Class类对象阶段&#xff1a;由类加载器将class文件加载到JVM内…

【网站项目】少儿编程管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

备战蓝桥杯---多路归并与归并排序刷题

话不多说&#xff0c;直接看题 1. 我们考虑一行一行合并&#xff0c;一共m次&#xff0c;我们合并两个并取前n小&#xff0c;那么我们怎么取&#xff1f; 我们采用分组的思想&#xff1a; 我们选第一列的min,然后把后面那个再纳入考虑&#xff0c;用优先队列实现即可。 下面…

chatGPT4无法登录

遇到问题&#xff1a;chatgpt网站上点击登录&#xff08;log in),网站就会跳转并显示&#xff1a;unable to connect 解决方法&#xff1a;不要用亚洲节点&#xff0c;亚洲节点被全面封禁&#xff0c;在全局代理中可以换成美国的节点

synchronized到底锁住的是谁?

我们使用synchronized关键字是用来实现线程同步的&#xff0c;当多个线程同时去争抢同一个资源的时候在资源上边加一个synchronized关键字&#xff0c;能够使得线程排队去完成操作。 synchronized到底锁定的是什么资源&#xff1f; 修饰方法非静态方法 &#xff0c;锁定的是方…

《UE5_C++多人TPS完整教程》学习笔记30 ——《P31 摄像机和弹簧臂(Camera And Spring Arm)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P31 摄像机和弹簧臂&#xff08;Camera And Spring Arm&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;…

使用git 和 github协作开发

文章目录 github浏览器汉化插件github新建仓库git安装以及ssh配置团队创建及基本命令的使用创建团队基本命令 分支管理快速切换远程仓库地址 如何使用git && github进行协作开发&#xff0c;包括git常见基础命令 github浏览器汉化插件 在刚开始使用github的时候&#…

ubuntu安装docker,并搭建vulfocus靶场

ubuntu安装docker&#xff0c;并搭建vulfocus靶场 docker是一个容器管理的软件&#xff0c;容器背后其实就是一个进程&#xff1b;类似于一个集装箱。 docker的官方下载地址&#xff1a;Install Docker Engine on Ubuntu | Docker Documentation&#xff08;可以根据自己需要的…

BL200耦合器数据采集模块

BL200耦合器数据采集模块是一个数据采集和控制系统&#xff0c;基于强大的32 位ARM926EJ-S™ 微处理器设计&#xff0c;采用Linux操作系统&#xff0c;支持Modbus TCP协议&#xff0c;可以快速接入现场PLC、MES、Ignition和SCADA以及ERP系统&#xff0c;同时也能快速连接到AWS云…

【文献分享】机器学习 + 分子动力学 + 第一性原理 + 热力学性质 + 微观结构

分享一篇关于机器学习 分子动力学 第一性原理 热学性质&#xff08;密度、比热容、导热率和粘度&#xff09; 微观结构的文章。 感谢论文的原作者&#xff01; 关键词&#xff1a; 1. Deep potential 2. Machine learning 3. Molecular dynamics 4. Microscopic structu…