POJ3669 Meteor Shower
http://poj.org/problem?id=3669
类似于迷宫的一道题 但是并没有 给出迷宫具体什么样
但是题目已说在坐标轴的第一象限
然后障碍就是 流星雨所砸范围
安全位置:永远不会发生危险的地方
那就变成一道纯广搜的题目了
具体思路:
预处理 将有危险的地方 标注为发生危险的时间(取最小!!!!)
其余地方取为-1(因为可能0时刻就发生危险了)
然后开始搜索
细节细节:
wrong1:超时 没有放访问数组visit一个地方是不需要重复访问的 不仅增加了步数搜索的时间 还降低了逃生的可能性 是无效操作
wrong2:将danger数组初始化为0 以为0就是安全的 但是流行可以0时刻坠落
wrong3:danger赋值 周围范围取最小 但是在输入坠落处时 忘记加判断
卡了一个晚上 。。。。。
#include <iostream>
#include <stdio.h>
#include <limits.h>
#include <queue>
#include <string.h> using namespace std; const int INF = INT_MAX;
int M,k;
struct Meteor
{
int x,y,t;
};
queue<Meteor> que;
typedef pair<int,int> P;
int danger[][];
bool visit[][];
int min_time = INF;
int d[][] = { {, }, {, }, {-, }, {, -} }; bool check(int x, int y)//检查是否越界 保http://poj.org/problem?id=3009证在第一象限
{
if (x < || y < ) return false;
return true;
} void bfs()
{
Meteor node,temp;
node.x = ;
node.y = ;
node.t = ;
visit[][] = true;
que.push(node);
while (!que.empty())
{
node = que.front();
que.pop();
//检查是否到达安全区
if (danger[node.x][node.y] == -)//如果到达安全区
{
min_time = min(min_time, node.t);
continue;
}
//没到安全区 那么查找周围可以走的点
for (int i = ; i <; i++)
{
if (check(node.x+d[i][], node.y+d[i][]))//没有越界
{
if (visit[node.x+d[i][]][node.y+d[i][]]) continue;//不走重复路 否则TLE
if (danger[node.x+d[i][]][node.y+d[i][]] == - || danger[node.x+d[i][]][node.y+d[i][]] > node.t + )//如果这个点可以走
{
temp.x = node.x + d[i][];
temp.y = node.y + d[i][];
temp.t = node.t + ;
que.push(temp);
visit[temp.x][temp.y] = true;
}
}
}
}
}
int main()
{
int tx, ty, tt;
freopen("in.txt", "r", stdin);
while (~scanf("%d", &M) )
{
min_time = INF;
memset(danger, -, sizeof(danger));
memset(visit, false, sizeof(visit));
for (int i = ; i < M; i++)
{
scanf("%d%d%d", &tx, &ty, &tt);
if (danger[tx][ty] < || danger[tx][ty] > tt)//82行知道取最小 直接输入的时候却忘记判断了Oh !
danger[tx][ty] = tt;
for (int j = ; j < ; j++)
{
if (check(tx+d[j][],ty+d[j][]))//如果为没有越界,周围四个点也是被摧毁的地区
{
danger[tx+d[j][]][ty+d[j][]] = danger[tx+d[j][]][ty+d[j][]] == - ? tt : min(tt, danger[tx+d[j][]][ty+d[j][]]);
}
}
}
bfs();
if (min_time == INF)
printf("-1\n");
else printf("%d\n", min_time);
}
return ;
}
POJ3669 Meteor Shower的更多相关文章
- poj3669 Meteor Shower(BFS)
题目链接:poj3669 Meteor Shower 我只想说这题WA了后去看讨论才发现的坑点,除了要注意原点外,流星范围题目给的是[0,300],到302的位置就绝对安全了... #include& ...
- POJ3669(Meteor Shower)(bfs求最短路)
Meteor Shower Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12642 Accepted: 3414 De ...
- poj3669 Meteor Shower(预处理+bfs)
https://vjudge.net/problem/POJ-3669 先给地图a[][]预处理每个位置被砸的最小时间.然后再bfs. 纯bfs,还被cin卡了下时间.. #include<io ...
- POJ-3669 Meteor Shower(bfs)
http://poj.org/problem?id=3669 注意理解题意:有m颗行星将会落在方格中(第一象限),第i颗行星在ti时间会摧毁(xi,yi)这个点和四周相邻的点,一个人开始在原点,然后只 ...
- poj3669 Meteor Shower (宽度优先搜索)
Description - 题目描述 Bessie听说有场史无前例的流星雨即将来临:有谶言:陨星将落,徒留灰烬.为保生机,她誓将找寻安全之所(永避星坠之地).目前她正在平面坐标系的原点放牧,打算在群星 ...
- 【POJ - 3669】Meteor Shower(bfs)
-->Meteor Shower Descriptions: Bessie听说有场史无前例的流星雨即将来临:有谶言:陨星将落,徒留灰烬.为保生机,她誓将找寻安全之所(永避星坠之地).目前她正在平 ...
- POJ 3669 Meteor Shower(流星雨)
POJ 3669 Meteor Shower(流星雨) Time Limit: 1000MS Memory Limit: 65536K Description 题目描述 Bessie hears ...
- poj 3669 Meteor Shower
Me ...
- BZOJ1611: [Usaco2008 Feb]Meteor Shower流星雨
1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 904 Solved: 393 ...
随机推荐
- Proactive Patching Overview
1.Proactive Patching Overview Between Patch Set releases, Oracle's proactive patching program provid ...
- mysql 判断字符串是否为其他字符串的子集
1.mysql 提供单个用逗号隔开判断某个字符串是否包含在其他字符串的之内:FIND_IN_SET('需要匹配的字符串','源字符串'); demo: select FIND_IN_SET('111' ...
- ES6语法糖集锦
sublime3安装Es6插件 javascriptNext,然后安装即可 JavaScriptNext - ES6 Syntax()高亮插件 -------------------------- ...
- Mysql:is not allowed to connect to this MySQL server [转]
原文链接http://www.blogjava.net/acooly/archive/2008/09/17/229368.html 如果你想连接你的mysql的时候发生这个错误:ERROR 1130: ...
- badblocks - 查询设备的坏区块
语法(SYNPSIS) badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o outp ...
- java_StringBuffer、StringBuilder
StringBuffer和StringBuider是可变的字符串,使用方法 相同,StringBuffer是线程安全的,StringBuider是线程不安全的 public class StringT ...
- JVM优化(中)
09.垃圾收集器之串行垃圾收集器: 1.-Xms512m 等价于 -XX:InitialHeapSize=512设置JVM初始堆内存大小:-Xmx2048m 等价于 -XX:MaxHeapSize=2 ...
- 在 VS2015+EF6.0中使用Mysql 遇到的坑
1)首先是要在vs2015中安装mysql Database 默认是不存在的 1)下载mysql-connector-net-6.9.9.msi 地址:https://dev.mysql.com ...
- 一键分享到QQ空间、QQ好友、新浪微博、微信代码
通过qq空间.qq聊天.新浪微博和微信二维码分享平台提供的接口,实现把网页中对应的图片.标题.描述的信息参数用javascript获取后传进接口中,实现一键分享. 使用到的接口(测试时需要登录,网址和 ...
- margin负值应用
我理解的最关键的一点是: 在文档流中,只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右移动.第二个元素的基准线是第一个元素的右边界,第三个元素的基准线是第一.二个元素排好后最右边的边 ...