-->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[][]= {{,},{-,},{,},{,-},{,}};//连带即自己5个方向
int bfs()
{
if(mp[][]==-)//起始点没落过流星,这里安全,不用走
return ;
if(mp[][]==)//起始点在时间t=0时就被落过流星,没开始走就挂了
return -;
now.x=,now.y=,now.t=;//初始化起点
q.push(now);
while(!q.empty())
{
now=q.front();
q.pop();
for(int i=;i<;i++)//人走四个方向
{
net.x=now.x+dt[i][];
net.y=now.y+dt[i][];
net.t=now.t+;
if(net.t<||net.y<)//题目要求人只能行于第一象限,即x和y可以大于300
continue;
if(mp[net.x][net.y]==-)//这里没落过流星 安全 不用走了
return net.t;
if(net.t>=mp[net.x][net.y])//到这里的时间>=流星落在这里的时间,不安全
continue;
mp[net.x][net.y]=net.t;//到这里的时间<流星落在这里的时间,暂时安全,还要继续走
q.push(net);
}
}
return -;
}
int main()
{
MEM(mp,-);
cin>>m;
while(m--)
{
cin>>x>>y>>t;
for(int i=;i<;i++)//mp存放每个流星落点附近点的时间最小值
{
int tx=x+dt[i][];
int ty=y+dt[i][];
if(tx<||tx>||ty<||ty>)//题目要求(0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300)
continue;
if(mp[tx][ty]==-)//没落过流星
mp[tx][ty]=t;
else//已经有过流星,取最小值
mp[tx][ty]=min(t,mp[tx][ty]);
}
}
cout<<bfs()<<endl;
}

【POJ - 3669】Meteor Shower(bfs)的更多相关文章

  1. 【POJ 2251】Dungeon Master(bfs)

    BUPT2017 wintertraining(16) #5 B POJ - 2251 题意 3维的地图,求从S到E的最短路径长度 题解 bfs 代码 #include <cstdio> ...

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

    Prime Path 原文是English 这里直接上中文了 Descriptions: 给你两个四位的素数a,b.a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变.请你计算 ...

  3. poj 3669 Meteor Shower(bfs)

    Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...

  4. 题解报告:poj 3669 Meteor Shower(bfs)

    Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...

  5. poi 3669 meteor shower (bfs)

    题目链接:http://poj.org/problem?id=3669 很基础的一道bfs的题,然而,我却mle了好多次,并且第二天才发现错在了哪里_(:з)∠)_ 写bfs或者dfs一定要记得对走过 ...

  6. 【POJ 1273】Drainage Ditches(网络流)

    一直不明白为什么我的耗时几百毫秒,明明差不多的程序啊,我改来改去还是几百毫秒....一个小时后:明白了,原来把最大值0x3f(77)取0x3f3f3f3f就把时间缩短为16ms了.可是为什么原来那样没 ...

  7. BZOJ 2296【POJ Challenge】随机种子(构造)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2296 [题目大意] 给出一个数x,求一个10的16次以内的数使得其被x整除并且数字包含 ...

  8. 【POJ - 3984】迷宫问题(dfs)

    -->迷宫问题 Descriptions: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 ...

  9. 【POJ - 2251】Dungeon Master (bfs+优先队列)

    Dungeon Master  Descriptions: You are trapped in a 3D dungeon and need to find the quickest way out! ...

随机推荐

  1. 在Winform窗体中使用WPF控件(附源码)

    原文:在Winform窗体中使用WPF控件(附源码) 今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件.原有是我在百度上搜索相关信息无果,遂干脆动手自己实现. W ...

  2. Django 下添加左侧字段显示和搜索

    在对应的apps下建立xadmin.py from .models import EmailVerifyRecord import xadminclass EmailVerifyRecordAdmin ...

  3. C#数字图像处理算法详解大全

    原文:C#数字图像处理算法详解大全 C#数字图像处理算法详解大全 网址http://dongtingyueh.blog.163.com/blog/#m=0 分享一个专业的图像处理网站(微像素),里面有 ...

  4. php 如何利用 soap调用.Net的WebService asmx文件

    原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各 ...

  5. Python:Numpy学习

    import numpy as np # 基础属性 array = np.array([[[1,2,3], [0,0,1]], [[1,2,3], [0,0,1]]], dtype = np.int6 ...

  6. Ubuntu14.04 静态编译安装Qt4.8.6

    ./configure -static -nomake demos -nomake examples -nomake tools -no-exceptions -prefix /usr/local/Q ...

  7. 一、Linux常用命令

    1.ls 作用:列出文件信息,默认为当前目录下 语法: -a:列出所有的文件,包括以.开头的隐藏文件 -d:列出目录本身,并不包含目录中的文件 -h:和-l一起使用,文件大小人类易读 -l:长输出(“ ...

  8. redis连接错误3种解决方案System Error MISCONF Redis is configured to save RDB snapshots

    redis连接错误System Error MISCONF Redis is configured to save RDB snapshots, but XX   情况1解决办法: 由于强制停止red ...

  9. mogodbshell中数组对象查询修改方法

    在mongodb中,存在如下数据 { "_id" : ObjectId("59af55078a8fc5e51ff425de"), "title&quo ...

  10. vue.js实现单选框、复选框和下拉框

    Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框   在传统的HTM ...