一起来看流星雨吧(话说我还没看到过流星雨呢)

题目

Problem

小A则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽,届时将会对它撞到的一切东西造成毁灭性的打击。

很自然地,小A开始担心自己的安全问题。他一定要在被流星砸到前,到达一个安全的地方(也就是说,一块不会被任何流星砸到的土地)。

如果将霸中放入一个直角坐标系中,小A现在的位置是原点,并且小A不能踏上一块被流星砸过的土地。根据预报,一共有M颗流星(1 \le M \le 50,0001≤M≤50,000)会坠落在霸中上,其中第i颗流星会在时刻 T_iT​i​​ (0 \le T_i \le 1,0000≤T​i​​≤1,000)砸在坐标为(X_i,Y_iX​i​​,Y​i​​) (0 \le X_i \le 3000≤X​i​​≤300;0 \le Y_i \le 3000≤Y​i​​≤300) 的格子里。

流星的力量会将它所在的格子,以及周围4个相邻的格子都化为焦土,当然小A也无法再在这些格子上行走。小A在时刻0开始行动,它只能在第一象限中, 平行于坐标轴行动,每1个时刻中,她能移动到相邻的(一般是4个)格子中的任意一个,当然目标格子要没有被烧焦才行。如果一个格子在时刻t被流星撞击或烧焦,那么小A只能在t之前的时刻在这个格子里出现。

请你计算一下,小A最少需要多少时间才能到达一个安全的格子。
注意土地的边界应该大于流星的边界,因为如果逃到那些地方也算安全地带。

Input Data

第1行: 1个正整数:MM 
第2..M+2..M+1行: 第i+1i+1行为3个用空格隔开的整数:X_iX​i​​,Y_iY​i​​,以及T_iT​i​​

Output Data

输出1个整数,即小A逃生所花的最少时间。如果小A无论如何都无法在流星雨中存活下来,输出-1

Input / Output Sample

 Input
4
0 0 2
2 1 2
1 1 2
0 3 5 Output
5

题目思路

一道搜索题,求最小步数最好用bfs, 要记录下每个区块被摧毁的时间,具体看代码

代码

#include <bits/stdc++.h>
using namespace std;
int n, t[1000][1000], inf, dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1}, ans = 1e9;
bool vis[1000][1000];
struct node{int xx, yy, tt;};
void bfs (){
queue <node> q;
q.push((node){1, 1, 0});
while (q.size()){
node tmp = q.front(); q.pop();
for (int i = 0; i < 4; i++){
int tx = tmp.xx + dx[i], ty = tmp.yy + dy[i];
if (vis[tx][ty] or tx < 1 or tx > 302 or ty < 1 or ty > 302) continue;
//若越界就跳过, 注意:因为数据范围最大为300,所以上限计为302
if (t[tx][ty] <= tmp.tt + 1) continue;
if (t[tx][ty] == inf) {ans = tmp.tt + 1; return;} //t[tx][ty]为inf则是安全区
q.push((node){tx, ty, tmp.tt + 1});
vis[tx][ty] = 1;
}
}
}
int main(){
scanf ("%d", &n);
memset (t, 0x3f, sizeof (t)); inf = t[1][1]; //将毁坏时间初始化为最大值
for (int i = 1, x, y, ti; i <= n; i++){
scanf ("%d %d %d", &x, &y, &ti), x++, y++; //将坐标+1后可避免越界
t[x][y] = min (t[x][y], ti); //当同一块被多次砸毁时时间取 min
for (int i = 0; i < 4; i++) t[x+dx[i]][y+dy[i]] = min (t[x+dx[i]][y+dy[i]], ti);
}
bfs ();
if (ans == 1e9) ans = -1; //如果答案仍为最大值则无法走出, 计为-1;
printf ("%d", ans);
return 0;
}

  

点一下左边的推荐吧!谢谢~~~

洛谷 P2895 [USACO08FEB]流星雨Meteor Shower 解题报告的更多相关文章

  1. 洛谷—— P2895 [USACO08FEB]流星雨Meteor Shower

    P2895 [USACO08FEB]流星雨Meteor Shower 题目描述 Bessie hears that an extraordinary meteor shower is coming; ...

  2. 洛谷P2895 [USACO08FEB]流星雨Meteor Shower

    题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will ...

  3. 洛谷 P2895 [USACO08FEB]流星雨Meteor Shower

    题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will ...

  4. bzoj1611 / P2895 [USACO08FEB]流星雨Meteor Shower

    P2895 [USACO08FEB]流星雨Meteor Shower 给每个点标记一下能够走的最迟时间,蓝后bfs处理一下 #include<iostream> #include<c ...

  5. P2895 [USACO08FEB]流星雨Meteor Shower

    传送门 预处理出每个位置最早被摧毁的时间,在此之前都可以走 直接dfs加个记忆化和最优性剪枝就好了 一定要注意流星的边界,如果波及到负数坐标的位置不要去考虑会RE 一定要考虑流星砸到边界的情况 如 ( ...

  6. 洛谷 P2323 [HNOI2006]公路修建问题 解题报告

    P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...

  7. 洛谷 P2895 [USACO08FEB]Meteor Shower S (BFS)

    题意:你刚开始位于坐标轴的\((0,0)\)点,一共有\(m\)颗流星砸向地面,每颗流星在\(t\)时砸到\((x,y)\)点,其四周上下左右也均有波及,你每秒可以向上下左右移动一个单位,问你是否可以 ...

  8. 洛谷 P1852 [国家集训队]跳跳棋 解题报告

    P1852 [国家集训队]跳跳棋 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\), ...

  9. 洛谷 P3299 [SDOI2013]保护出题人 解题报告

    P3299 [SDOI2013]保护出题人 题目描述 出题人铭铭认为给SDOI2012出题太可怕了,因为总要被骂,于是他又给SDOI2013出题了. 参加SDOI2012的小朋友们释放出大量的僵尸,企 ...

随机推荐

  1. CDH版本Hbase二级索引方案Solr key value index

    概述 在Hbase中,表的RowKey 按照字典排序, Region按照RowKey设置split point进行shard,通过这种方式实现的全局.分布式索引. 成为了其成功的最大的砝码. 然而单一 ...

  2. SpringBoot2.0之整合Dubbo

    Dubbo支持协议 Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的. Sprin ...

  3. hdu 4704 sum(费马小定理+快速幂)

    题意: 这题意看了很久.. s(k)表示的是把n分成k个正整数的和,有多少种分法. 例如: n=4时, s(1)=1     4 s(2)=3     1,3      3,1       2,2 s ...

  4. Meta viewport 学习整理

    The meta viewport tag contains instructions to the browser in the matter of viewports and zooming. I ...

  5. codeforces 659C C. Tanya and Toys(水题+map)

    题目链接: C. Tanya and Toys time limit per test 1 second memory limit per test 256 megabytes input stand ...

  6. linux 进程学习笔记-named pipe (FIFO)命名管道

    与“无名管道”不同的是,FIFO拥有一个名称来标志它,所谓的名称实际上就是一个路径,比如“/tmp/my_fifo”,其对应到磁盘上的一个管道文件,如果我们用file命令来查看其文件类型的话,会得到如 ...

  7. OpenCV——高斯模糊与毛玻璃特效

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  8. 分布式一致性协议之:Zab(Zookeeper的分布式一致性算法)

    Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量 ...

  9. SpringMVC之四:渲染Web视图

    理解视图解析 在前面的例子中,我们看到控制器返回的都是一个逻辑视图的名称,然后把这个逻辑视图名称交给view resolver,然后返回渲染后的 html 页面给 client. 将控制器中请求处理的 ...

  10. Camera Vision - video surveillance on C#

    转自:http://blog.csdn.net/xyz_lmn/article/details/6072897 http://www.codeproject.com/KB/audio-video/ca ...