洛谷 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市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...
随机推荐
- Haffman编码
Huffman树又称为最优树,是一种带权路径最短的树. 一.带权路径 在一棵树中我们把一个节点到另一个节点之间的通路叫做路径,在路径中每经过一个节点路径的长度就加一.如果对一个节点附上权值,则该节点的 ...
- python 递归\for循环_斐波那契数列
# 递归 def myAdd(a, b): c = a + b print(c) if c > 100: return return myAdd(a + 1, c) #最大递归深度是1000 m ...
- (1)ASP.NET Core 应用启动Startup类简介
1.前言 Core与早期版本的 ASP.NET 对比,配置应用程序的方式的 Global.asax.FilterConfig.cs和RouteConfig.cs 都被Program.cs 和 Star ...
- 静态工具类注入service的方法
http://blog.sina.com.cn/s/blog_6e2d53050102wl3x.html
- Javascript判断参数类型
function (options, param) { alert(typeof options); if (typeof options == "string") { alert ...
- mybatis中参数为list集合时使用 mybatis in查询
mybatis中参数为list集合时使用 mybatis in查询 一.问题描述mybatis sql查询时,若遇到多个条件匹配一个字段,sql 如: select * from user where ...
- ASP.NET SignalR 系列(六)之连接事件
本章主要介绍下SignalR自带的连接事件 其实再前面的示例中,有出现了一些事件的重载,比如 public override Task OnConnected() 下面简单介绍一下SignalR提供了 ...
- win add static arp
win add static arp > arp -s "192.168.0.2" "00-0a-35-01-fe-c0" > arp -a | f ...
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- js原型链的看法
原型链 对象 对象: 1,函数对象:由function创造出来的函数 2,普通对象:除开函数对象之外的对象,都是普通对象 **即普通对象obj是构造函数Object的一个实例,因此: obj.__pr ...