NOIp 2017 奶酪 【并查集】 By cellur925
Orz去年考场上做这道题的我应该还在抱怨没学过空间几何,不一会太困了就开始打瞌睡,然后为了防止睡觉开始在devc++上写默写离骚(逃
思路:如果两个空洞相交,那么把他们并在一个集合里。最后对于每个集合,查看他们中是否同时存在与下表面相通和与上表面相通的空洞,存在则Yes.
细节:1 如何判断相交?类比平面中的概念,判断空间中两圆是否相交同样可以通过圆心间距离是否小于等于二倍半径来确定。
2 如何判断是否同时存在两个与下表面相通和与上表面相通的空洞?可以在输入的时候预处理出所有与下表面相通和与上表面相通的空洞,然后将他们进行枚举,如果存在在同一集合的情况则合法。
3 开long long!!!
Code
#include<cstdio>
#include<cmath>
#define maxn 1090 using namespace std;
typedef long long ll; int T;
ll n,h,r,cnt,sum;
bool flag;
int fa[maxn],qaq[maxn],qwq[maxn];
struct node{
ll x,y;
ll z;
}point[maxn]; int getf(int p)
{
if(fa[p]==p) return p;
else return getf(fa[p]);
} void init()
{
cnt=;sum=;flag=;
} double dis(int l,int r)
{
return sqrt((point[l].x-point[r].x)*(point[l].x-point[r].x)+(point[l].y-point[r].y)*(point[l].y-point[r].y)+(point[l].z-point[r].z)*(point[l].z-point[r].z));
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&n,&h,&r);
for(int i=;i<=n;i++)
{
scanf("%lld%lld%lld",&point[i].x,&point[i].y,&point[i].z);
if(point[i].z-r<=) qaq[++cnt]=i;
if(point[i].z+r>=h) qwq[++sum]=i;
}
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(i==j) continue;
if(dis(i,j)<=(double)*r)
{
int pp=getf(i);
int qq=getf(j);
if(pp!=qq)
fa[qq]=pp;
}
}
for(int i=;i<=cnt;i++)
{
for(int j=;j<=sum;j++)
if(getf(qaq[i])==getf(qwq[j]))
{
printf("Yes\n");
flag=;
break;
}
if(flag) break;
}
if(!flag) printf("No\n");
init();
}
return ;
}
小结:开始看题看的我一头雾水 T1难度都做不出
我还是太弱了。
NOIp 2017 奶酪 【并查集】 By cellur925的更多相关文章
- #C++初学记录(奶酪#并查集)
原题目:牛客网 题目描述 : 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 ...
- NOIP2017 Day2 T1 奶酪(并查集)
题目描述 现有一块大奶酪,它的高度为 hhh ,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z=0z ...
- 洛谷 P3958 奶酪 并查集
目录 题面 题目链接 题面 题目描述 输入输出格式 输入格式 输出格式: 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P3958 奶酪 题面 题目描述 现有一块大奶酪 ...
- NOIp2017D2T1(luogu3968) 奶酪 (并查集)
并查集. 判相切或相交的时候可以两边同时平方,就不需要double和开根号了. #include<cstdio> #include<cstring> #include<a ...
- 浅谈并查集 By cellur925【内含题目食物链、银河英雄传说等】
什么是并查集? 合并!查询!集合! 专业点说? 动态维护若干不重叠的和,支持合并查询的数据结构!(lyd老师说的) 数据结构特点:代表元.即为每个集合选择一个固定的元素,作为整个集合的代表,利用树形结 ...
- 洛谷P3958 奶酪 并查集
两个空洞可互达当且仅当两个空洞相切,即球心距离小于等于球的直径. 一一枚举两个可互达的空洞,并用并查集连起来即可. Code: #include<cstdio> #include<c ...
- [noip模拟]心<并查集>
背景描述: 不是一切深渊都是灭亡 不是一切灭亡都覆盖在弱者的头上 ——<这也是一切> 舒婷 有N个透明的盒子, 每个盒子里面有两个不同颜色的球, 总共有M种颜色. Alice和Bob又在玩 ...
- [NOIP 2017] 奶酪
[题目链接] http://uoj.ac/problem/332 [算法] 直接搜索即可 注意使用long long [代码] #include<bits/stdc++.h> using ...
- Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...
随机推荐
- 制作自己的网站第二步***在Linux上装上需要的软件以及部署项目配置**
在购买自己的服务器后,如果想要把项目跑起来,就得安装一些必要的软件. 这里只说一些最基础最基本最不可或缺的几个.其他的可以根据自己的需要 安装使用. 首先,那就是配置jdk了,我们可以通过一些工具把下 ...
- 国内代码托管平台(Git和SVN)
Github(Git和SVN)https://github.com/ 可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS ...
- Linux集群的总结和思考
前言:在涉及到对外项目,经手许多小中型网站的架构,F5.LVS及Nginx都比较多,我想一种比较通俗易懂的语气跟大家说明下何谓负载均衡,何谓Linux集群,帮助大家走出这个误区,真正意义上来理解它们. ...
- centos mysql错误信息处理
mysql_secure_installation 提示错误:Enter current password for root (enter for none):ERROR 1045 (28000): ...
- vue 配置跨域访问
主要在config->index.js中配置 proxyTable: { ‘/gameapi’: { changeOrigin: true, // target: ‘http://rap.id. ...
- “var arr = []; ”和 “var arr = {};” 的差别
1.面试题 var arr = []; var arr = {}; 比較上述代码有什么差别? 2.解析 var arr = [];是一个数组对象 var arr = {} ...
- Jedis学习使用(java操作redis)
Jedis 是 Redis 官方首选的 Java client开发包. 工作过程总结的一个演示样例.贴出来,例如以下: package com.wujintao.redis; import java. ...
- Python 离线等价类
离线等价类的概念见离线等价类 最近在清洗数据的时候涉及到要将相似度比较高的文件夹合并,特征比对得到是1:1的对,比如: (a,b),(c,d),(a,c)...,那么合并的时候就涉及到将这些等价的对合 ...
- python 深浅复制与指针内存
Python是一门非常好的语言,他的长处在于拥有巨大灵活性的同一时候也拥有无比的严谨性,其它语言规定了非常多语法.告诉你什么情况下,语法就是这种,而Python却用非常少的规定,延伸出非常多语法,有些 ...
- 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数
Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...