2019/9/27 题解:【P3958】 奶酪

    题解:【P3958】  奶酪

  题目:

      传送门:https://www.luogu.org/problem/P3958

  AC代码:DFS

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 int n,outfg,cnt,anst;
 8 double h,r;
 9 int ans[1005];
10 struct node
11 {
12     double x;
13     double y;
14     double z;
15     int vis;
16 }p[1005];
17 bool cmp(node a,node b)
18 {
19     return a.z<b.z;
20 }
21 double dis(node a,node b)
22 {
23     double x1=a.x, x2=b.x, y1=a.y, y2=b.y, z1=a.z, z2=b.z;
24     return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
25 }
26 void dfs(int x)
27 {
28     if(p[x].z+r>=h)//边界
29     {
30         outfg=1;
31         return;
32     }
33     p[x].vis=1;
34     for(int i=1;i<=n;i++)
35     {
36         double d=dis(p[x],p[i]);
37         if(d==0)
38         continue;
39         if(outfg==1)
40         return ;
41         if(p[i].vis==0)
42         {
43             if(d<=r*2)
44             {
45                 dfs(i);
46             }
47         }
48     }
49 }
50 int main()
51 {
52     int t;
53     scanf("%d",&t);
54     anst=t;
55     while(t--)
56     {
57         outfg=0;
58         scanf("%d %lf %lf ",&n,&h,&r);
59         for(int i=1;i<=n;i++)
60         p[i].vis=0;
61         for(int i=1;i<=n;i++)
62         {
63             scanf("%lf %lf %lf",&p[i].x,&p[i].y,&p[i].z);
64         }
65         sort(p+1,p+n+1,cmp);
66         for(int i=1;i<=n;i++)
67         {
68             if(outfg==1)
69             break;
70             if(p[i].z<=r)
71             dfs(i);
72         }
73         if(outfg==1)
74         ans[anst-t]=1;
75         else ans[anst-t]=0;
76     }
77     for(int i=1;i<=anst;i++)
78     if(ans[i]==1)
79     printf("Yes\n");
80     else if(ans[i]==0)
81     printf("No\n");
82     return 0;
83 }

  重点(坑):

  1.别闲的没事干往函数里面传结构体

     个人理解传结构体原理是先将结构体复制一遍再进行操作,原结构体数据不改变(debug : 2.5h)

  2.别清除访问标记

     亲测导致部分数据无限循环//50%AC,50%TLE(debug:0.5h)

  //噎死纪念

  

原文地址:https://www.cnblogs.com/randomaddress/p/11616491.html

时间: 2024-11-06 03:53:48

2019/9/27 题解:【P3958】 奶酪的相关文章

2019.11.11 题解报告

目录 2019.11.11 题解报告 答题情况: 各题目分析: 题目解析: 代码实现: 2019.11.11 题解报告 \[N^2\text{狂草1e5它不香嘛?}\] \[\text{By:Unluckierblock}\] 答题情况: 总成绩 : 169, 排名: 11 / 32 T1 : 0 T2 : 99 T3 : 70 各题目分析: 题目 1 : 预估成绩 : 60 实际成绩 : 0 考试用时 : 8 : 00 ~ 8 : 50 , 9 : 50 ~ 10 : 10 没有什么感觉 ,

2019.08.27学习整理

2019.08.27学习整理 什么是继承 是一种新建类的方式,继承了一个类,类中的属性和方法就在子类中 父类/基类 子类/派生类 新式类:只要继承了object类,就是新式类,在python3中,默认继承object类 -Python3中:默认继承object class A: pass -python2中,需要显示的指定继承object --经典类:没有继承object的类,就是经典类 -python3中没有经典类 -python2中才有 利用继承减少代码冗余 #继承重用父类方法方式一:指名道

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

洛谷P3958 奶酪

题目:https://www.luogu.org/problemnew/show/3958 题目描述 现有一块大奶酪,它的高度为 hh,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z=0,奶酪的上表面为z=h. 现在,奶酪的下表面有一只小老鼠 Jerry,它知道奶酪中所有空洞的球心所在的坐 标.如果两个空洞相切或是相交,则 Jerry 可以从其中一个空洞跑到另一个空洞,特别 地,如果一个空洞与下表面

LeetCode(27)题解:Remove Element

https://leetcode.com/problems/remove-element/ Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed. It doesn't matter what you leave beyond the new length. 思路: 因为可以改变元

2019.3.27

1.贪心:最优队列 http://poj.org/problem?id=3253 倒推,最小的两个和在一起,加入队列(模拟倒割) #include<iostream> #include<algorithm> #include<queue> #define LL long long using namespace std; int f[20005]; priority_queue<int, vector < int > ,greater < int

Google Code Jam 2019 Round 1A 题解

A. Alien Rhyme 题意: 思路:将字符反向插入一颗Trie,然后自下而上的贪心即可,即先选后缀长的,再选后缀短的. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <iomanip> 5 6 #include <vector> 7 #include <cstring> 8 #include <string>

2019.7.27考试反思

前方低能,请战斗人员和非战斗人员靠近. 这次考试大概是正常水平偏低.... 就算这样反正前两次倒数第二机房反正是稳了可以考虑去抢一下第二机房房主 考试前一天专题就出来了,结果有bug,我把题解下载了我真的没看要不然我还能这分 达哥想了一个月出的题,应该会河鳝核善一点bgm核爆起 考试上来首先过了一遍题,T1不会,T2很迷,T3贼鸡儿像原题? 然后开始快快乐乐码T3,大概码了45分钟拿了75分. 滚回去看T1,手%都不会,看来我概率期望真的和shi一样,qj了一个点. 然后看T2,emmmmm,第

P3958 奶酪

题目描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z=0,奶酪的上表面为z=h. 现在,奶酪的下表面有一只小老鼠 Jerry,它知道奶酪中所有空洞的球心所在的坐 标.如果两个空洞相切或是相交,则 Jerry 可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry 则可以从奶酪下表面跑进空洞:如果 一个空洞与上表面相切或是相交,Jer