博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NOIP2017】奶酪
阅读量:5343 次
发布时间:2019-06-15

本文共 2028 字,大约阅读时间需要 6 分钟。

本题在洛谷上的链接:


 

应该算NOIP2017里比较简单的。。。

一开始以为水上了天,直接用邻接矩阵存边,结果TLE了两个点,改成邻接链表就过了。应该是多组输入数据的原因。

这道题需要注意的是溢出错误,虽然坐标不会炸int,但中间的运算过程会,所以有的地方要用long long。

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 typedef long long ll; 9 10 const int maxn = 1005;11 12 int head[maxn], eid;13 14 struct Edge {15 int v, next;16 } edge[maxn / 2 * maxn];17 18 void insert(int u, int v) {19 edge[++eid].v = v;20 edge[eid].next = head[u];21 head[u] = eid;22 }23 24 int t, n, h, r;25 int x[maxn], y[maxn], z[maxn], vis[maxn];26 27 queue
q;28 29 inline ll pw2(int x) {
return 1LL * x * x;}30 31 inline double dis(int i, int j) {32 return sqrt(pw2(x[i] - x[j]) + pw2(y[i] - y[j]) + pw2(z[i] - z[j]));33 }34 35 inline int bfs() {36 q.push(0);37 vis[0] = 1;38 while (!q.empty()) {39 int u = q.front();40 q.pop();41 if (u == n + 1) {42 while (!q.empty()) q.pop();43 return 1;44 }45 vis[u] = 1;46 for (int p = head[u]; p; p = edge[p].next)47 if (!vis[edge[p].v]) q.push(edge[p].v);48 }49 return 0;50 }51 52 int main() {53 scanf("%d", &t);54 while (t--) {55 memset(vis, 0, sizeof(vis));56 memset(head, 0, sizeof(head));57 eid = 0;58 scanf("%d%d%d", &n, &h, &r);59 for (int i = 1; i <= n; ++i) {60 scanf("%d%d%d", &x[i], &y[i], &z[i]);61 if (abs(z[i]) <= r) {insert(0, i); insert(i, 0);}62 if (abs(1LL * h - z[i]) <= r) {insert(n + 1, i); insert(i, n + 1);}63 }64 for (int i = 1; i <= n; ++i)65 for (int j = i + 1; j <= n; ++j)66 if (dis(i, j) <= 2 * r)67 {insert(i, j); insert(j, i);}68 if (bfs()) printf("Yes\n");69 else printf("No\n");70 }71 return 0;72 }
AC代码

 

转载于:https://www.cnblogs.com/Mr94Kevin/p/9813255.html

你可能感兴趣的文章
golang多维数组的切片
查看>>
IP 网际协议
查看>>
C语言_第五章__实践(密码转换)
查看>>
docker 容器后台运行命令
查看>>
jquery 获取css position的值
查看>>
面向对象的程序设计
查看>>
a标签添加点击事件
查看>>
Context.startActivity出现AndroidRuntimeException
查看>>
Intellij idea创建javaWeb以及Servlet简单实现
查看>>
代理网站
查看>>
Open multiple excel files in WebBrowser, only the last one gets activated
查看>>
FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
查看>>
最近邻与K近邻算法思想
查看>>
【VS开发】ATL辅助COM组件开发
查看>>
FlatBuffers In Android
查看>>
《演说之禅》I &amp; II 读书笔记
查看>>
thinkphp3.2接入支付宝支付接口(PC端)
查看>>
response和request
查看>>
【转】在Eclipse中安装和使用TFS插件
查看>>
回到顶部浮窗设计
查看>>