洛谷 P3958 奶酪 题解
思路:
先看哪两个点能互通,再广搜寻找下一步,如果到达高度h就输出Yes,如果所有路径都找过都不能到达高度h就输出No。
#include<bits/stdc++.h>
using namespace std;
long long t;
long long n,h,r;
long long x[],y[],z[];
long long maap[][];
long long book[];
long long flag=;
long long p;//用long long(数据范围大)
int juli(long long a,long long b,long long c,long long d,long long e,long long f)
{
double sum1=sqrt((a-b)*(a-b)+(c-d)*(c-d)+(e-f)*(e-f));//判断两个点之间的距离
double bj=*r;//double既不会爆有可以对付小数问题
if(sum1<=bj) return ;//如果两个圆心的距离小于等于两个半径,说明这两个洞连着
else return ;
}
int main()
{
cin>>t;
queue<int> q;//初始化队列
while(t--)//t组数据
{
flag=;//判断有没有输出
while(!q.empty())q.pop();
memset(book,,sizeof(book));
memset(maap,,sizeof(maap));//初始化
//maap储存地图maap[i][j]储存i和j能不能相连
cin>>n>>h>>r;//输入
for(long long i=;i<=n;i++)
{
cin>>x[i]>>y[i]>>z[i];//输入
if(z[i]+r>=h)book[i]=;//判断第i个能不能到顶层,如果能book[i]=2
if(z[i]-r<=)q.push(i);//如果这个点能到地面,就把它推入队列,准备广搜
}
for(long long i=;i<=n;i++)
for(long long j=i;j<=n;j++)
if(juli(x[i],x[j],y[i],y[j],z[i],z[j])==)
{
maap[i][j]=;
maap[j][i]=;
}//判断i和j能否相连,储存在maap里
while(!q.empty())
{
p=q.front();//取一个点开始广搜
q.pop();//搜过的点pop
if(book[p]==)
{
cout<<"Yes"<<endl;
flag=;
break;
}//如果这个点p可以到顶层,就输出yes,flag=1(代表已经输出过)
if(book[p]!=)
{
book[p]=;//一个点不能重复走(实际可以,但是没有意义
for(long long k=;k<=n;k++)
if(maap[p][k]==)//如果现在的点p可以到点k
q.push(k);//把k推入队列,广搜
}
}
if(flag==)//如果flag=0,说明没有输出过,也就是说不能到达顶层,输出-1;
cout<<"No"<<endl;
}
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)
洛谷 P3958 奶酪 题解的更多相关文章
- 洛谷 P3958 奶酪
谨以此题来纪念我爆炸的NOIp2017 这个题虽然很多人说是并查集,但是搜索也是毫无压力的,考场搜索细节写挂,爆了个不上不下的80分.今天无意看到这道题,终于AC 首先这道题要考虑一下精度问题,虽然出 ...
- 洛谷 P3958 奶酪 并查集
目录 题面 题目链接 题面 题目描述 输入输出格式 输入格式 输出格式: 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P3958 奶酪 题面 题目描述 现有一块大奶酪 ...
- 『题解』洛谷P3958 奶酪
Portal Portal1: Luogu Portal2: LibreOJ Portal3: Vijos Description 现有一块大奶酪,它的高度为\(h\),它的长度和宽度我们可以认为是无 ...
- 洛谷P3958 奶酪
题目链接 这道题貌似可以用BFS来写吧qwq. 我用的是并查集,把联通的洞合并在同一个几何中,最后只需要判断是否存在上表面和下表面有相同集合的洞即可. 但是需要注意的是还有这样的一种情况:有一个大洞贯 ...
- 洛谷P3958 奶酪 并查集
两个空洞可互达当且仅当两个空洞相切,即球心距离小于等于球的直径. 一一枚举两个可互达的空洞,并用并查集连起来即可. Code: #include<cstdio> #include<c ...
- 洛谷NOIp热身赛题解
洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...
- 洛谷P2827 蚯蚓 题解
洛谷P2827 蚯蚓 题解 题目描述 本题中,我们将用符号 ⌊c⌋ 表示对 c 向下取整. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现 ...
- 洛谷P1816 忠诚 题解
洛谷P1816 忠诚 题解 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人 ...
- [POI 2008&洛谷P3467]PLA-Postering 题解(单调栈)
[POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...
随机推荐
- Linux基础(11)原始套接字
一边接收函数返回一边判断返回值时一定要把接收的优先级加()提高再去判断 例 if((sockfd = socket()) < 0) 问题: 如何实现SYN扫描器扫描端口 , 比如AB两个设备要进 ...
- CF468C Hack It! 构造
传送门 让人觉得脑子不够用的构造 考虑对于一个区间\([l,r]\)如何让它调整使得最后的结果恰好加上\(1\). 注意到对于一个\(<10^{18}\)的数\(x\),\(f(x+10^{18 ...
- SVN客户端教程
.SVN是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问 ...
- Python报错:ImportError: cannot import name 'ConnectionRefusedError'
启动了一个flask server,结果报了标题中的错误. ImportError: cannot import name 'ConnectionRefusedError' 解决: pip insta ...
- 回归写博客时间-----CeliaTodd
2019-10-17-19:28:01 记录自己的学习路程 国庆期间本来是有持续写博客的,但是有各种原因就没时间写博客了, 但是学习的进度还是没有落下的,现在正式回归写博客的时间了. 但现在不是写Py ...
- vue创建项目(推荐)
上一节我们介绍了vue搭建环境的情况,并使用一种方式搭建了一个项目,在这里为大家推荐另一种创建项目的方式. vue init webpack-simple vuedemo02 cd vuedemo02 ...
- python day 14: 作业:开发一个能够多用户上传文件的FTP脚本
目录 python day 14 1. 要求 2. 自己写的程序目录 3. models模块 4. settings模块 5. tcp_server模块 6. client模块 7. 后记 pytho ...
- Django:基于调试组插件go-debug-toolbar
1.django-debug-toolbar 介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息.返回 ...
- vue请求简单配置
简单记录一下vue的http请求配置相关 测试环境请求接口设置: 1. config/dev.env.js添加: module.exports = merge(prodEnv, { NODE_ENV ...
- Python爬虫系列:四、Cookie的使用
Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么 ...