2019/9/27 题解:P3958 奶酪

Posted randomaddress

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

  //噎死纪念

  

以上是关于2019/9/27 题解:P3958 奶酪的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P3958 奶酪

洛谷P3958 奶酪

P3958 奶酪

poj 3616 Milking Time(DP)

题解 P1894 [USACO4.2]完美的牛栏The Perfect Stall

实习日记 2019.9.27