洛谷P3958

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

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

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

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

 1 #include<cstdio>
 2 #include<cmath>
 3 using namespace std;
 4 struct ball
 5 {
 6     long long x,y,z;//开成long long防止运算溢出
 7 }balls[1001];//存储球心信息
 8 int up[1001],down[1001],tot1,tot2;//和上表面/下表面接触的球的球心编号及数组的大小标记
 9 int fa[1001];//并查集组件
10 int getfa(int x){return fa[x]==x?x:fa[x]=getfa(fa[x]);}//寻找父亲
11 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));}//求球心矩
12 int main()
13 {
14     int t;
15     scanf("%d",&t);
16     while(t--)
17     {
18         for(int i=1;i<=1000;i++)
19             fa[i]=i;//初始化fa数组
20         tot1=tot2=0;
21         int n,h,r;
22         scanf("%d%d%d",&n,&h,&r);
23         for(int i=1;i<=n;i++)
24         {
25             int x,y,z;
26             scanf("%d%d%d",&x,&y,&z);
27             balls[i].x=x;balls[i].y=y;balls[i].z=z;
28             if(z+r>=h)//球与上表面相交
29                 up[++tot1]=i;
30             if(z-r<=0)//球与下表面相交
31                 down[++tot2]=i;
32         }
33         for(int i=1;i<=n;i++)//判断任意两个球是否相交
34             for(int j=i+1;j<=n;j++)
35                 if(dis(balls[i],balls[j])<=2*r)
36                     fa[getfa(i)]=getfa(j);//若相交,合并
37         bool ans=false;
38         for(int i=1;i<=tot1;i++)
39             for(int j=1;j<=tot2;j++)
40                 if(getfa(up[i])==getfa(down[j]))//如果从上面与下面相通,则为真
41                 {
42                     ans=true;
43                     break;
44                 }
45         if(ans)
46             printf("Yes\n");
47         else
48             printf("No\n");
49     }
50     return 0;
51 }

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

转载于:https://www.cnblogs.com/LiHaozhe/p/9495597.html

NOIP2017 D2T1 奶酪相关推荐

  1. [SinGuLaRiTy] NOIP2017 提高组

    [SinGuLaRiTy-1048] Copyright (c) SinGuLaRiTy 2018. All Rights Reserved. NOIP2017过了这么久,现在2018了才找到寒假这么 ...

  2. 杨辉三角(二项式定理)组合数 【noip 2011/2016 d2t1】

    杨辉三角与二项式定理 , (紫书p349) 杨辉三角性质via百度百科 杨辉三角与组合数 EG1 noip2011 d2t1 计算系数 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^ ...

  3. [SDOI2012]拯救小云公主

    题目 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己 ...

  4. [NOIp2017提高组]奶酪(BFS)

    [NOIp2017提高组_Day2T1]奶酪 1 #include<iostream> 2 #include<stdio.h> 3 #include<vector> ...

  5. 【NOIP2017提高组】奶酪

    奶酪 题目背景 NOIP2017提高组 DAY2 T1 题目描述 现有一块大奶酪,它的高度为h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标 ...

  6. JZOJ 5476. 【NOIP2017提高组正式赛】奶酪

    Description 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z = ...

  7. 用灌水法解NOIP2017提高组D2第一题:奶酪

    题目描述 现有一块大奶酪,它的高度为> h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z> = ...

  8. NOIP2017 酱油记

    NOIP2017 真的是剧毒,根本想不到还有这种操作,唉,不说了,滚粗辣 day 0 下午 4 点,我们二十多人从 CDQZ_GX 离开,花了一个多小时,前往电子科技大学(UESTC)附近的酒店 诶- ...

  9. NOIP2017总结与反思

    NOIP2017总结与反思 手动博客搬家: 本文发表于20180213 00:01:05, 原地址https://blog.csdn.net/suncongbo/article/details/793 ...

  10. NOIP2017提高组比赛总结

    NOIP2017提高组比赛总结 前言 转眼间,NOIP2017(经常叫他NOIP,其实全称是全国青少年信息学奥林匹克联赛)就这么过去了.回望这2个月,既有参加NOIP的激动,也有赛场上一些失利的遗憾. ...

最新文章

  1. java 将整型数组内容写入txt文件_Java自学-I/O 字节流
  2. 被操纵的BCE与去中心化的BCH
  3. 不错php文件缓存类,一个不错的PHP文件页面缓存类
  4. linux 引用其它脚本中的变量
  5. C#实现整数冒泡排序、选择排序
  6. 三款博客备份下载软件
  7. 2014年12月26日
  8. “世界百位名人”诠释上海世博会城市主题
  9. 微信AI开放接口介绍
  10. 文件的记录c语言程序,急求如何将下列C语言程序数据存储到文件中?
  11. Swift - 使用UIScrollView实现页面滚动切换
  12. Linux系统 Centos6 安装
  13. 计算机网络第七版 部分详细答案
  14. 概率论 马尔可夫 切比雪夫等定理的解释
  15. 删除右键新建多余菜单
  16. 死链接检查工具:Xenu 使用教程
  17. 50个漂亮的页面导航设计
  18. 翻译: 人工智能的时代的教育将比上一代富豪的孩子更受益 慕课大规模开放在线课程(MOOC)
  19. 福建农林大学计算机分数线,福建农林大学录取分数线2021是多少分(附历年录取分数线)...
  20. java同时引用不同版本同一个jar包

热门文章

  1. 【spring】spring动态代理和Spring_AOP
  2. .tar文件和.tar.gz文件
  3. mysql 清空二进制日志
  4. Linux 命令之 nohup 后台运行程序,tail 实时查看文件内容
  5. android 动态设置priority,Android属性之android:priority
  6. 独立看门狗及其实现的热启动
  7. 爬kuku漫画网站的小爬虫
  8. java课程设计---彩票销售管理系统
  9. Android中的Handler的机制与用法详解
  10. UIView的layoutSubviews,initWithFrame,initWithCoder方法