洛谷P3958

超级水的并没有用什么几何知识的几何题……

直接爆搜一遍最后判断有没有与上/下表面相连的球之间连通即可……O(n2)不动脑子的复杂度

最多只是用一下并查集来判断两个点是否连通……

具体细节不必赘述代码如下(超简洁只有51行)

 #include<cstdio>
#include<cmath>
using namespace std;
struct ball
{
long long x,y,z;//开成long long防止运算溢出
}balls[];//存储球心信息
int up[],down[],tot1,tot2;//和上表面/下表面接触的球的球心编号及数组的大小标记
int fa[];//并查集组件
int getfa(int x){return fa[x]==x?x:fa[x]=getfa(fa[x]);}//寻找父亲
double dis(ball i,ball j){return sqrt((i.x-j.x)*(i.x-j.x)+(i.y-j.y)*(i.y-j.y)+(i.z-j.z)*(i.z-j.z));}//求球心矩
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
for(int i=;i<=;i++)
fa[i]=i;//初始化fa数组
tot1=tot2=;
int n,h,r;
scanf("%d%d%d",&n,&h,&r);
for(int i=;i<=n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
balls[i].x=x;balls[i].y=y;balls[i].z=z;
if(z+r>=h)//球与上表面相交
up[++tot1]=i;
if(z-r<=)//球与下表面相交
down[++tot2]=i;
}
for(int i=;i<=n;i++)//判断任意两个球是否相交
for(int j=i+;j<=n;j++)
if(dis(balls[i],balls[j])<=*r)
fa[getfa(i)]=getfa(j);//若相交,合并
bool ans=false;
for(int i=;i<=tot1;i++)
for(int j=;j<=tot2;j++)
if(getfa(up[i])==getfa(down[j]))//如果从上面与下面相通,则为真
{
ans=true;
break;
}
if(ans)
printf("Yes\n");
else
printf("No\n");
}
return ;
}

我只想提醒一点……判断球是否与上下表面相邻(读入处理的地方)一定一定不要加else!因为一个球可能同时与上下表面相连!我随手加个else30分就没有了………………

NOIP2017 D2T1 奶酪的更多相关文章

  1. [Luogu 3958] NOIP2017 D2T1 奶酪

    题目链接 人生第一篇题解,多多关照吧. 注意事项: 1.多组数据,每次要先初始化. 2.因为涉及到开根,所以记得开double. 整体思路: 建图,判断「起点」与「终点」是否连通. 方法可选择搜索(我 ...

  2. NOIP2017 D2T1奶酪

    这题终于是正经第一题感觉了. 只需要对相交或相切的球建一条边,然后对所有与底面有交点的球连边,再对所有与顶面有交点的球连边,bfs判断上下连通性即可. #include<iostream> ...

  3. NOIP 2017 D2T1 奶酪

    #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #i ...

  4. luogu 3958 奶酪

    noip2017 D2T1 奶酪 某zz选手没有想到可以用并查集来做,直接用了dijskstra,结果被ccf老爷机卡成了70分 题目大意: 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为 ...

  5. noip2017部分题目

    D1T3 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张NN个点MM条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,NN号点是公园的出口,每条边有一个非负权值, 代表策策经过 ...

  6. NOIP2017 题解

    QAQ--由于没报上名并没能亲自去,自己切一切题聊以慰藉吧-- 可能等到省选的时候我就没有能力再不看题解自己切省选题了--辣鸡HZ毁我青春 D1T1 小凯的疑惑 地球人都会做,懒得写题解了-- D1T ...

  7. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  8. NOIP 考前研究

    NOIP 2017 试题研究 D1T1 小凯的疑惑 (45 min) 看到题面,大概是推数学公式. 先打暴力表,观察 \(a,b\) 与 \(n\) 的关系.猜想 \(a×b−a−b\). 引理:对于 ...

  9. NOIp2017TG解题报告

    NOIp2018RP++! 虽然没去但还得写写QAQ D1T1 : 小凯的疑惑 数学题 手推几组数据然后发现规律 \(Ans = (a-1)(b-1)+1\) AC in 1minite D1T2 : ...

随机推荐

  1. delphi DLL image 动态绘图 句柄处理

    在调用DLL 动态在T Image 绘图时,传入  Image.Canvas.Handle 后,却总是绘不上,有时偶尔能绘上,却没搞清原因,而同样的代码,传入窗体的 Handle ,绘图却正常. 经过 ...

  2. Python学习之==>集合

    1.简介 集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复数据的. 2.集合的作用 它可以把一个列表中重复的数据去掉,而不需要你再写判断 可以做关系测试,比 ...

  3. C# Hook 方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  4. Arm-linux-gcc-4.3.2安装步骤 (转)

    http://blog.chinaunix.net/uid-26119896-id-3302233.html 安装交叉编译工具链: 1.首先以root用户登入 2.复制arm-linux-gcc-4. ...

  5. 一、Zabbix-学习列表

    近期本人在求职,面试了几家,觉得监控是一个很重要的事情,所以决定深入学习一下监控.目前的监控系统有很多,Zabbix是目前应用最广泛的开源监控之一,功能比较完善,所以决定学习一下. 目前将学习zabb ...

  6. Javascript原型介绍

    原型及原型链 原型基础概念 function Person () { this.name = 'John'; } var person = new Person(); Person.prototype ...

  7. HTTP/2 最新漏洞,直指 Kubernetes!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 在这个数据.应用横行的时代,漏洞的出现早已屡见不鲜.在尚未造成大面积危害之前,我们该如何做好防御措施?或许从过往经常发生漏洞 ...

  8. JAVA知识点总结(六)(集合)

    第十九章 集合 一.数组弊端: 数组长度是固定的,无法继续添加元素. 二.什么是集合: Java提供一个集合类,它的长度是可以改变的,能储存任意的对象,长度随着元素的增加而增加. 三.集合和数组的区别 ...

  9. nginx下载安装和虚拟机的配置

    一. Nginx下载安装 1.Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/software/ wget http://nginx.org/download/n ...

  10. python列表,字典,集合

    初识模块 import sys print(sys.path)#查看化境变量 print(sys.argv)#查看文件的相对路径,但是在pachrm中 会自动转为绝对路径 import os #os. ...