-->Meteor Shower

直接上中文了

Descriptions:

Bessie听说有场史无前例的流星雨即将来临;有谶言:陨星将落,徒留灰烬。为保生机,她誓将找寻安全之所(永避星坠之地)。目前她正在平面坐标系的原点放牧,打算在群星断其生路前转移至安全地点。

此次共有M (1 ≤ M ≤ 50,000)颗流星来袭,流星i将在时间点Ti (0 ≤ Ti  ≤ 1,000) 袭击点 (Xi, Yi) (0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300)。每颗流星都将摧毁落点及其相邻四点的区域。

Bessie在0时刻时处于原点,且只能行于第一象限,以平行与坐标轴每秒一个单位长度的速度奔走于未被毁坏的相邻(通常为4)点上。在某点被摧毁的刹那及其往后的时刻,她都无法进入该点。

寻找Bessie到达安全地点所需的最短时间。

Input 

* 第1行: 一个整数: M
* 第2..M+1行: 第i+1行包含由空格分隔的三个整数: Xi, Yi, and Ti

Output

* 仅一行: Bessie寻得安全点所花费的最短时间,无解则为-1。

Sample Input 

4
0 0 2
2 1 2
1 1 2
0 3 5

Sample Output 

5

题目链接:
https://vjudge.net/problem/POJ-3669

题目没给地图,但是自己要会做地图

题目要求的是流星坐标(0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300),而人的坐标只能行于第一象限,所以人可以X>300,Y>300

首先把流星落到(x,y)的时间全部展现在地图mp[i][j]中,然后人从(0,0)开始出发,dfs,找到没有落流星的地方即可

AC代码:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
#define Maxn 310
using namespace std;
struct node
{int x,y,t;//坐标,时间
};
node now,net;
queue<node>q;
int m;
int x,y,t;
int mp[Maxn][Maxn];//存每一个坐标的时间
int dt[][2]= {{1,0},{-1,0},{0,1},{0,-1},{0,0}};//连带即自己5个方向
int bfs()
{if(mp[0][0]==-1)//起始点没落过流星,这里安全,不用走return 0;if(mp[0][0]==0)//起始点在时间t=0时就被落过流星,没开始走就挂了return -1;now.x=0,now.y=0,now.t=0;//初始化起点
    q.push(now);while(!q.empty()){now=q.front();q.pop();for(int i=0;i<4;i++)//人走四个方向
        {net.x=now.x+dt[i][0];net.y=now.y+dt[i][1];net.t=now.t+1;if(net.t<0||net.y<0)//题目要求人只能行于第一象限,即x和y可以大于300continue;if(mp[net.x][net.y]==-1)//这里没落过流星 安全 不用走了return net.t;if(net.t>=mp[net.x][net.y])//到这里的时间>=流星落在这里的时间,不安全continue;mp[net.x][net.y]=net.t;//到这里的时间<流星落在这里的时间,暂时安全,还要继续走
            q.push(net);}}return -1;
}
int main()
{MEM(mp,-1);cin>>m;while(m--){cin>>x>>y>>t;for(int i=0;i<5;i++)//mp存放每个流星落点附近点的时间最小值
        {int tx=x+dt[i][0];int ty=y+dt[i][1];if(tx<0||tx>300||ty<0||ty>300)//题目要求(0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300)continue;if(mp[tx][ty]==-1)//没落过流星mp[tx][ty]=t;else//已经有过流星,取最小值mp[tx][ty]=min(t,mp[tx][ty]);}}cout<<bfs()<<endl;
}

转载于:https://www.cnblogs.com/sky-stars/p/11185040.html

【POJ - 3669】Meteor Shower(bfs)相关推荐

  1. 【POJ - 3126】Prime Path(bfs)

    题干: 给你两个四位的素数a,b. a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变. 请你计算a最少经过多少次上述变换才能变成b. 例如:1033 -> 8179  ...

  2. 【POJ - 3026】Borg Maze(bfs预处理 + 最小生成树,建图)

    题干: The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of the gala ...

  3. 【HRBUST - 1613】迷宫问题 (bfs)

    题干: 小z身处在一个迷宫中,小z每分钟可以走到上下左右四个方向的相邻格之一.迷宫中有一些墙和障碍物. 同时迷宫中也有一些传送门,当小z走到任意一个传送门时,可以选择传送到其他任意的传送门(传送是不花 ...

  4. 【POJ - 2376】Cleaning Shifts (贪心)

    题干: Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores ...

  5. 【POJ - 2632】Crashing Robots(模拟)

    题干: In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ens ...

  6. 【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)

    [HDU 2612 Find a Way(BFS)](兼BFS入门笔记) 原题入口: http://acm.hdu.edu.cn/showproblem.php?pid=2612 第一篇在CSDN的博 ...

  7. 【图像分割应用】设备自动化(一)——自动驾驶

    这是专栏<图像分割应用>的第5篇文章,本专栏主要介绍图像分割在各个领域的应用.难点.技术要求等常见问题. 这是本专栏的第二个板块设备自动化的第1篇文章.通勤是我们日常生活的一个重要组成部分 ...

  8. 【图像分割应用】医学图像分割(三)——肿瘤分割

    这是专栏<图像分割应用>的第3篇文章,本专栏主要介绍图像分割在各个领域的应用.难点.技术要求等常见问题. 肿瘤的分割是医学图像分析领域的一个重要内容,相比较前面提到过的脑区域分割和心脏分割 ...

  9. 【图像分割应用】医学图像分割(二)——心脏分割

    这是专栏<图像分割应用>的第2篇文章,本专栏主要介绍图像分割在各个领域的应用.难点.技术要求等常见问题. 相比较脑区域分割,医学图像中的心脏分割问题要更复杂,因为心脏是一个不停运作的器官, ...

最新文章

  1. BZOJ4573 : [Zjoi2016]大森林
  2. Linux运维 第三阶段 (二) DHCP
  3. Ansible中的变量及加密
  4. android native.js,Android Native与JS通信互调
  5. 计算机论文搜索技巧【一】
  6. @RequestParam注解使用
  7. java后台获取流_java后台发送请求获取数据,并解析json数据
  8. 记一份电网信息化建设企业信息分析平台规划
  9. win10系统安装CH340驱动
  10. Dispatch(01)
  11. 数星星(结构体专题)
  12. Java小白 前端后端开发 环境搭建【jdk+idea+webstorm+maven+nodejs+vue+mysql】
  13. 使用ngrok 二 -- 微信公众号笔记---本地调试微信接口
  14. 抓包微信小程序openid的教程
  15. 疫情之后,SaaS的春天就来了吗?
  16. [原]删除dboy病毒
  17. java导入excel组件_三十五、Java中常见解析Excel引入的XXE组件复现与分析
  18. vins安装及小觅深度版运行
  19. sql modify的使用方法
  20. Others1_教你快速玩转chrome浏览器

热门文章

  1. mysql表 新增一个字段
  2. 数模第一次作业:层次分析法分析养殖场动物方案
  3. linux系统记录修改时间,查看和修改linux系统时间
  4. 为什么我们要尽快把绕月卫星发上去
  5. php关闭notice_PHP_屏蔽PHP默认设置中的Notice警告的方法,PHP的默认设置是显示Notice警告 - phpStudy...
  6. 爬虫-招聘系列1----51Job
  7. html 大一尝试————中国诗词鉴赏
  8. 艾蒂机器人_奥特曼格斗进化3艾斯机器人怎么玩厉害_奥特曼格斗进化3艾斯机器人使用心得分享_斗蟹游戏网...
  9. kotlin——xml解析
  10. 奇安信:笔试题(20190909)