博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-3669 Meteor Shower(bfs)
阅读量:5021 次
发布时间:2019-06-12

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

http://poj.org/problem?id=3669

注意理解题意:有m颗行星将会落在方格中(第一象限),第i颗行星在ti时间会摧毁(xi,yi)这个点和四周相邻的点,一个人开始在原点,然后只能在第一象限内行走,每单位时间移动一格,只能移动到当前未摧毁的点,问多少时间能到达安全地方。

开始题意理解错了,没有明白每一颗行星最多摧毁5个点,我们可以预处理出被行星摧毁的点,然后用bfs搜索。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 //#include
15 #include
16 17 #define CL(arr, val) memset(arr, val, sizeof(arr))18 19 #define ll long long20 #define inf 0x7f7f7f7f21 #define lc l,m,rt<<122 #define rc m + 1,r,rt<<1|123 #define pi acos(-1.0)24 25 #define L(x) (x) << 126 #define R(x) (x) << 1 | 127 #define MID(l, r) (l + r) >> 128 #define Min(x, y) (x) < (y) ? (x) : (y)29 #define Max(x, y) (x) < (y) ? (y) : (x)30 #define E(x) (1 << (x))31 #define iabs(x) (x) < 0 ? -(x) : (x)32 #define OUT(x) printf("%I64d\n", x)33 #define lowbit(x) (x)&(-x)34 #define Read() freopen("a.txt", "r", stdin)35 #define Write() freopen("dout.txt", "w", stdout);36 #define maxn 100000000037 #define N 101038 using namespace std;39 40 int dir[5][2]={-1,0,1,0,0,1,0,-1,0,0};41 int vis[500][500];42 struct node43 {44 int x,y,time;45 };46 47 int bfs()48 {49 if(vis[0][0]==-1) return 0;50 node p;51 p.x=p.y=p.time=0;52 queue
que;53 que.push(p);54 while(que.size())55 {56 node q=que.front();57 que.pop();58 for(int i=0;i<4;i++)59 {60 p=q;61 p.x=q.x+dir[i][0];62 p.y=q.y+dir[i][1];63 p.time++;64 if(p.x<0||p.y<0) continue; //出界了65 if(vis[p.x][p.y]==-1) return p.time; //到达安全地方66 if(p.time
=0&&yy>=0) //预处理所有被摧毁的点,并赋值为被摧毁的最小时间。89 {90 if(vis[xx][yy]==-1) vis[xx][yy]=t;91 else vis[xx][yy]=min(t,vis[xx][yy]);92 }93 }94 }95 if(vis[0][0]==0) printf("-1\n");96 else printf("%d\n",bfs());97 return 0;98 }
View Code

 

转载于:https://www.cnblogs.com/nowandforever/p/4380036.html

你可能感兴趣的文章
java的面向对象 (2013-09-30-163写的日志迁移
查看>>
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原则
查看>>
NOJ——1568走走走走走啊走(超级入门DP)
查看>>
文件操作
查看>>
Python:GUI之tkinter学习笔记3事件绑定(转载自https://www.cnblogs.com/progor/p/8505599.html)...
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>
浅谈 Mybatis中的 ${ } 和 #{ }的区别
查看>>