NOIP2017 D2T1 奶酪
洛谷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 奶酪相关推荐
- [SinGuLaRiTy] NOIP2017 提高组
[SinGuLaRiTy-1048] Copyright (c) SinGuLaRiTy 2018. All Rights Reserved. NOIP2017过了这么久,现在2018了才找到寒假这么 ...
- 杨辉三角(二项式定理)组合数 【noip 2011/2016 d2t1】
杨辉三角与二项式定理 , (紫书p349) 杨辉三角性质via百度百科 杨辉三角与组合数 EG1 noip2011 d2t1 计算系数 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^ ...
- [SDOI2012]拯救小云公主
题目 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己 ...
- [NOIp2017提高组]奶酪(BFS)
[NOIp2017提高组_Day2T1]奶酪 1 #include<iostream> 2 #include<stdio.h> 3 #include<vector> ...
- 【NOIP2017提高组】奶酪
奶酪 题目背景 NOIP2017提高组 DAY2 T1 题目描述 现有一块大奶酪,它的高度为h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标 ...
- JZOJ 5476. 【NOIP2017提高组正式赛】奶酪
Description 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z = ...
- 用灌水法解NOIP2017提高组D2第一题:奶酪
题目描述 现有一块大奶酪,它的高度为> h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z> = ...
- NOIP2017 酱油记
NOIP2017 真的是剧毒,根本想不到还有这种操作,唉,不说了,滚粗辣 day 0 下午 4 点,我们二十多人从 CDQZ_GX 离开,花了一个多小时,前往电子科技大学(UESTC)附近的酒店 诶- ...
- NOIP2017总结与反思
NOIP2017总结与反思 手动博客搬家: 本文发表于20180213 00:01:05, 原地址https://blog.csdn.net/suncongbo/article/details/793 ...
- NOIP2017提高组比赛总结
NOIP2017提高组比赛总结 前言 转眼间,NOIP2017(经常叫他NOIP,其实全称是全国青少年信息学奥林匹克联赛)就这么过去了.回望这2个月,既有参加NOIP的激动,也有赛场上一些失利的遗憾. ...
最新文章
- java 将整型数组内容写入txt文件_Java自学-I/O 字节流
- 被操纵的BCE与去中心化的BCH
- 不错php文件缓存类,一个不错的PHP文件页面缓存类
- linux 引用其它脚本中的变量
- C#实现整数冒泡排序、选择排序
- 三款博客备份下载软件
- 2014年12月26日
- “世界百位名人”诠释上海世博会城市主题
- 微信AI开放接口介绍
- 文件的记录c语言程序,急求如何将下列C语言程序数据存储到文件中?
- Swift - 使用UIScrollView实现页面滚动切换
- Linux系统 Centos6 安装
- 计算机网络第七版 部分详细答案
- 概率论 马尔可夫 切比雪夫等定理的解释
- 删除右键新建多余菜单
- 死链接检查工具:Xenu 使用教程
- 50个漂亮的页面导航设计
- 翻译: 人工智能的时代的教育将比上一代富豪的孩子更受益 慕课大规模开放在线课程(MOOC)
- 福建农林大学计算机分数线,福建农林大学录取分数线2021是多少分(附历年录取分数线)...
- java同时引用不同版本同一个jar包
热门文章
- 【spring】spring动态代理和Spring_AOP
- .tar文件和.tar.gz文件
- mysql 清空二进制日志
- Linux 命令之 nohup 后台运行程序,tail 实时查看文件内容
- android 动态设置priority,Android属性之android:priority
- 独立看门狗及其实现的热启动
- 爬kuku漫画网站的小爬虫
- java课程设计---彩票销售管理系统
- Android中的Handler的机制与用法详解
- UIView的layoutSubviews,initWithFrame,initWithCoder方法