题解【洛谷P3958】[NOIP2017]奶酪
题解
我们考虑使用一个并查集维护空洞之间的关系。
如果两个空洞能相互到达,那么它们的祖先也是相同的。
枚举从哪一个空洞开始,能否到达奶酪的上表面。
如果能到达就输出Yes
,否则输出No
。
注意开long long
。
代码
#include <bits/stdc++.h>
#define itn int
#define int long long
#define gI gi
using namespace std;
inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
}
const int maxn = 1003;
bool fl = false;
int t, n, m, h, r, fa[maxn], x[maxn], y[maxn], z[maxn];
inline bool getdis(int x, int y, int z)
{
if (x * x + y * y + z * z <= 4 * r * r) return true;//计算能否互相到达
return false;
}
inline void kz(int u)//进行扩展
{
if (!fl) return;//已经有解了就直接返回
if (z[u] + r >= h)//到达了上表面
{
fl = false;
return;
}
for (int i = 1; i <= n; i+=1)
{
if (fa[i] == 1) continue;//能够互相到达就不要再计算了
if (getdis(x[i] - x[u], y[i] - y[u], z[i] - z[u]))//可以从u到i
{
fa[i] = 1;//记录祖先
kz(i);//扩展i
}
}
}
inline void solve()
{
for (int i = 1; i <= n; i+=1)
{
if (z[i] <= r)//可以从下表面开始
{
fa[i] = 1;//记录祖先
kz(i);//进行扩展
}
}
}
signed main()
{
t = gi();
while (t--)
{
n = gi(), h = gi(), r = gi();
for (int i = 1; i <= n; i+=1) fa[i] = 0;//初始化
for (int i = 1; i <= n; i+=1)
{
x[i] = gi(), y[i] = gi(), z[i] = gi();
}
fl = true;
solve();
if (fl) puts("No");
else puts("Yes");//输出
}
return 0;
}
题解【洛谷P3958】[NOIP2017]奶酪的更多相关文章
- [洛谷P3958] NOIP2017 奶酪
问题描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z = 0,奶酪 ...
- 【洛谷p3958】奶酪
奶酪[题目链接] 题前废话不知道说啥了啊qwq(越来越沉默寡言) 好了看题: SOLUTION: 思路的话,大概是搜索,然后大概广搜??? 但是我们今天写深搜(也是听xcg大佬讲了以后的整理博) 首先 ...
- 洛谷 P3958 奶酪
谨以此题来纪念我爆炸的NOIp2017 这个题虽然很多人说是并查集,但是搜索也是毫无压力的,考场搜索细节写挂,爆了个不上不下的80分.今天无意看到这道题,终于AC 首先这道题要考虑一下精度问题,虽然出 ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
- 题解 洛谷 P3396 【哈希冲突】(根号分治)
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...
- 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...
- 题解-洛谷P4229 某位歌姬的故事
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...
- 题解-洛谷P4724 【模板】三维凸包
洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...
- 题解-洛谷P4859 已经没有什么好害怕的了
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...
- 题解-洛谷P5217 贫穷
洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\te ...
随机推荐
- opencv —— src.at<Vec3b>(i, j)[0]、src.at<uchar>(i, j)、src.ptr<uchar>(i) 访问图像的单个像素
动态地址访问像素:src.at<Vec3b>(i, j)[0].src.at<uchar>(i, j) int b = src.at<Vec3b>(i, j)[0 ...
- 【python基础语法】数据类型:数值、字符串 (第2天课堂笔记)
""" 数据类型: 一.数值类型:整数 浮点数 布尔值 二.序列类型:字符串.列表 元祖 三.散列类型:字典 集合 可变数据类型: 列表 字典 集合,可以改动内存地址数据 ...
- 【58】目标检测之YOLO 算法
YOLO 算法(Putting it together: YOLO algorithm) 你们已经学到对象检测算法的大部分组件了,在这个笔记里,我们会把所有组件组装在一起构成YOLO对象检测算法. ...
- CF #619 div.2
序 希望,不要还有一天像今天一样糟糕. T1 three strings 笔记本的google 炸了,读题可难受了 多组测试数据 我们的想法是,用string存字符串,若 对于任意的i,a[i],b[ ...
- javaSE学习笔记(11)--- Map
javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...
- ECMAScript基本对象——RegExp 正则表达式对象
含义:定义字符串的组成规则 使用: 1.定义单个字符:[ ] [a] 表示有一个字符是 小写的a [ab] 表示有一个字符是 小写的a或者b [a-z] 表示有一个字符是 小写的a到z [a-z ...
- lvs使用进阶
之前lvs基础篇(https://www.cnblogs.com/ckh2014/p/10855002.html)中介绍了lvs-dr的搭建,下面我们再复习一下,架构如下: 相关配置 director ...
- 洛谷 P4708 画画
题意 在所以置换下,本质不同的各个极大连通子图均含有欧拉闭迹的\(n\)阶图个数 做法 务必先做完这题再看此题解,因为会省略大部分分析了 仍是从边入手,隔外限制:各个点度数是偶数 某个因子内\((m= ...
- Easy_language
http://www.guosen.com.cn/gxzq/tradestation/help/operate/operate06.html power language https://seekin ...
- Web APIs---2. DOM(1)
1 DOM简介 1.1 定义 DOM就是文档对象模型,是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口.W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容 ...