【比赛】NOIP2017 奶酪
开始看到题以为是计算几何,后面发现不是,然后秒掉了。
可能写SPFA写多了,别人都是并查集做的,我用的是SPFA。
不过无所谓,我们把题目中的下底面和上表面看成两个点,那么就是求这两个点的连通性,如果连通,出Yes,否则出No。
转换成图论,如果两个洞的半径乘2大于等于两洞球心之间的距离,那么这两个洞就直接相通,连边,总共平方复杂度建图。
然后跑SPFA,如果终点的dis不为inf,就可到达。
- #include<bits/stdc++.h>
- using namespace std;
- #define ll long long
- const int MAXN=+,inf=0x3f3f3f3f;
- int T,n,h,p[MAXN],d[MAXN],to[MAXN*MAXN*],nex[MAXN*MAXN*],beg[MAXN],w[MAXN*MAXN*],e,s,t;
- ll r;
- struct node{
- int x,y,z;
- };
- node hole[MAXN];
- inline void read(int &x)
- {
- int data=,w=;
- char ch=;
- while(ch!='-'&&(ch<''||ch>''))ch=getchar();
- if(ch=='-')w=-,ch=getchar();
- while(ch>=''&&ch<='')data=(data<<)+(data<<)+(ch^''),ch=getchar();
- x=data*w;
- }
- inline bool connect(int i,int j)
- {
- if(4ll*r*r-(ll)(hole[i].x-hole[j].x)*(ll)(hole[i].x-hole[j].x)>=(ll)(hole[i].y-hole[j].y)*(ll)(hole[i].y-hole[j].y)+(ll)(hole[i].z-hole[j].z)*(ll)(hole[i].z-hole[j].z))return true;
- else return false;
- }
- inline void insert(int x,int y,int z)
- {
- to[++e]=y;
- nex[e]=beg[x];
- beg[x]=e;
- w[e]=z;
- }
- inline void Build()
- {
- for(register int i=;i<=n;++i)
- for(register int j=i+;j<=n;++j)
- if(connect(i,j))insert(i,j,),insert(j,i,);
- for(register int i=;i<=n;++i)
- if(hole[i].z-r<=)insert(s,i,);
- for(register int i=;i<=n;++i)
- if(hole[i].z+r>=h)insert(i,t,);
- }
- inline void SPFA()
- {
- for(register int i=;i<=t;++i)d[i]=inf;
- queue<int> q;
- q.push(s);
- p[s]=;
- d[s]=;
- while(!q.empty())
- {
- int x=q.front();
- q.pop();
- p[x]=;
- for(register int i=beg[x];i;i=nex[i])
- if(d[to[i]]>d[x]+w[i])
- {
- d[to[i]]=d[x]+w[i];
- if(!p[to[i]])
- {
- p[to[i]]=;
- q.push(to[i]);
- }
- }
- }
- }
- inline void init()
- {
- e=;
- memset(beg,,sizeof(beg));
- memset(p,,sizeof(p));
- }
- int main()
- {
- freopen("cheese.in","r",stdin);
- freopen("cheese.out","w",stdout);
- read(T);
- while(T--)
- {
- init();
- read(n);read(h);scanf("%lld",&r);
- s=n+,t=n+;
- for(register int i=;i<=n;++i)read(hole[i].x),read(hole[i].y),read(hole[i].z);
- Build();
- SPFA();
- if(d[t]<inf)printf("Yes\n");
- else printf("No\n");
- }
- return ;
- }
NOIP2017 奶酪
【比赛】NOIP2017 奶酪的更多相关文章
- noip2017奶酪
题目描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z=0,奶酪的上 ...
- [洛谷P3958] NOIP2017 奶酪
问题描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z = 0,奶酪 ...
- 题解【洛谷P3958】[NOIP2017]奶酪
题面 题解 我们考虑使用一个并查集维护空洞之间的关系. 如果两个空洞能相互到达,那么它们的祖先也是相同的. 枚举从哪一个空洞开始,能否到达奶酪的上表面. 如果能到达就输出Yes,否则输出No. 注意开 ...
- P2498 [SDOI2012]拯救小云公主
\(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...
- NOIP2017普及组比赛总结
期中考总结&NOIP2017总结 2017年11月11日,我第二次参加NOIP普及组复赛.上一年,我的得分是250分,只拿到了二等奖.我便把目标定为拿到一等奖,考到300分以上. 早上8点多, ...
- NOIP2017提高组day2T1题解(奶酪)
题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...
- 【比赛】NOIP2017 宝藏
这道题考试的时候就骗了部分分.其实一眼看过去,n范围12,就知道是状压,但是不知道怎么状压,想了5分钟想不出来就枪毙了状压,与AC再见了. 现在写的是状压搜索,其实算是哈希搜索,感觉状压DP理解不了啊 ...
- 【比赛】NOIP2017 逛公园
考试的时候灵光一闪,瞬间推出DP方程,但是不知道怎么判-1,然后?然后就炸了. 后来发现,我只要把拓扑和DP分开,中间加一个判断,就AC了,可惜. 看这道题,我们首先来想有哪些情况是-1:只要有零环在 ...
- 【比赛】NOIP2017 时间复杂度
恶心的模拟题,考场上犯了一堆错误,多组数据清空没清完.数组开小...民间都是50分,结果CCF90.. 考完后随便改改就过了,还好只少了10分,如果真的是50,我估计会疯掉. 因为考场的时候没写好,所 ...
随机推荐
- Python学习之路:一天搞定基础部分
~代表省略的内容,如变量名.字符串等等 1.Pyhton中比较特别的运算: **:代表指数运算,例如2**3 = 8 //:代表整除运算,这一点和Java不同 2.Python的注释: #:单行注释 ...
- 从python容器中随机选取元素
# 1.使用python random模块的choice方法随机选择某个元素 import random foo = ['a', 'b', 'c', 'd', 'e'] from random imp ...
- 零基础学Python之结构化数据(附详细的代码解释和执行结果截图)
3结构化数据 字典(查找表).集合.元组.列表 3.1字典 是有两列任意多行的表,第一列存储一个键,第二列存储一个值. 它存储键/值对,每个唯一的键有一个唯一与之关联的值.(类似于映射.表) 它不会维 ...
- 如何在多机架(rack)配置环境中部署cassandra节点
cassandra节点上数据的分布和存储是由系统自动完成的.除了我们要设计好partition key之外,在多机架(rack)配置环境中部署cassandra节点,也需要考虑cassandra分布数 ...
- 【Unity】 Cursor学习
CursorLockMode.None 光标行为未修改,第一人称视角下鼠标可以突破窗口. CursorLockMode.Locked 光标锁定到游戏窗口的中心,与全屏与否无关,同时隐藏光标(这一点在3 ...
- Windows下的ROUGE文本测评工具基本安装
需要的安装包: rouge1.5.5:https://pan.baidu.com/s/1B7-LYn1lZKC8f51yXxNK9w Strawberry Perl :http://strawberr ...
- 使用C#把Tensorflow训练的.pb文件用在生产环境
训练了很久的Tf模型,终于要到生产环境中去考研一番了.今天花费了一些时间去研究tf的模型如何在生产环境中去使用.大概整理了这些方法. 继续使用分步骤保存了的ckpt文件 这个貌似脱离不了tensorf ...
- nohup命令详解
基础命令学习目录首页 原文链接:https://blog.csdn.net/hfismyangel/article/details/80258126 1.nohup 用途:不挂断地运行命令. 语法:n ...
- ansible使用1
常用软件安装及使用目录 ansible软件2 ### ansible软件部署安装需求#### 01. 需要有epel源 系统yum源(base epel--pip gem) sshpass---e ...
- Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目
Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http: ...