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

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

这个题是2017noip提高组的真题,是一个深度搜索题,得分轨迹:10-80-100pts。

在三维空间里,存在可能连通的洞(半径r),问是否可以通过这些洞从底部到达顶部。一开始我联想到了01迷宫,以联通块的方式求解,但发现不可。于是就单纯想用一个一维的dfs去枚举,发现这个dfs的时间复杂度很低,似乎每一个节点访问一遍即可。首先确定了每次要枚举的是当前的坐标,如果z+r>=h则flag=true,如果没有就for(1~n),打上标记,但在这里,每一个点只需要走一次就可以了,因为从2-4如果到不了,那么从3-4也到不了,所以不用回溯。但是需要有一个入口,那么要把dfs放到一个for里,如果z<=r,那么进去。但是对于数据类型的定义我出现了问题,请教了lz,hhs,lxy大佬。

1.要想骗到分或者代码写崩了,仔细看数据范围,比如这个题n=1,直接判断能不能到达底部和顶部就20分了。

2.多组数据输出时别忘了换行。

3.计算公式的正确性一定要保证,调试的时候心态放平,按部就班,应该可以找出来的。

4.对于数据的类型定义,sqrt要double,平方要long long这些都要想清楚

代码

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 struct node{ 9 double x;10 double y;11 double z;12 }a[1000005];13 int book[1000005];14 int T;15 int n,h;16 long long r; 17 bool flag=false;18 long long d;19 long long dis(double x,double y,double z,double xx,double yy,double zz){20 return ((x-xx)*(x-xx)+(y-yy)*(y-yy)+(z-zz)*(z-zz));21 // return ((x-xx)^2+(y-yy)^2+(z-zz)^2);22 }23 void dfs(double x,double y,double z){24 if(z+r>=h){25 flag=true;26 return;27 }28 if(flag==false){29 for(int i=1;i<=n;i++){30 if(book[i]==0){ 31 //cout<
>n>>h>>r;47 for(int i=1;i<=n;i++){48 cin>>a[i].x>>a[i].y>>a[i].z;49 book[i]=0;50 }51 for(int i=1;i<=n;i++){52 if(flag==true) break;53 if(a[i].z<=r){54 // cout<
<

 

转载于:https://www.cnblogs.com/china-mjr/p/11333255.html

你可能感兴趣的文章
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
函数式编程与参数
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
文件操作
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>