洛谷 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市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...
随机推荐
- 文件和异常练习——python编程从入门到实践
10-1 Python学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学习到的python知识,其中每一行都以“In Python you can”打头.将这和文件命名为learning ...
- t100 debug常用指令
1. r.d 程式代號 Find (Ctrl+F) => Find Next(F3). 設中斷點(Toggle):Double Click => Run/Continue the ...
- 挂载一个NFS共享
在 system2 上挂载一个来自 system1.group8.example.com 的NFS共享,并符合下列要求: 1./public 挂载在下面的目录上 /mnt/nfsmount 2./pr ...
- c# 拼接字符串根据逗号切割 后转换成集合或数组
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_27559331/article/d ...
- Win8.1下Flash Builder 提示: 找不到所需的Adobe Flash Player调试器版本,解决办法
系统:Win8.1 x64 [解决]安装Flash DeBug最新版本补丁,注意下载对应系统的调试版本 下载地址:http://www.adobe.com/support/flashplayer/do ...
- nginx.conf配置demo
#user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- Java操作JSON数据(1)--JSON-lib操作JSON数据
JSON-lib是一个java库,用于将bean.映射.集合.java数组和XML转换为JSON,或将JSON转为beans和DynaBeans.JSON-lib最后的版本是2.4,更新时间是2010 ...
- 【android,eclipse解决】eclipse insert "}" to complete ClassBodyR.java
Android开发:eclipse搭建后,如果出现 eclipse insert "}" to complete ClassBodyR.java/appcompat_v7/gen/ ...
- 【RMAN】TSPITR--RMAN表空间基于时间点的自动恢复
[RMAN]TSPITR--RMAN表空间基于时间点的自动恢复 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- 用navicat操作oracle新建表空间、用户名、密码
转载从:https://www.cnblogs.com/franson-2016/p/5925593.html 首先.我们来新建一个表空间.打开Navicat for Oracle,输入相关的的连接信 ...