PKU 3669 Meteor Shower(BFS)

【题解】POJ 3669 Meteor Shower(BFS) POJ 3669 Meteor Shower https://vjudge.net/problem/POJ-3669 题意 有一场流星雨即将到来,Bessie要找到一个安全的地方。现在已知有M颗流星,并且知道它们抵达的位置和时间,Bessi走一个单位需要一个单位时间,问到达安全位置的最短时间,如果无法到达安全位置就输出-1。 细则: 1、Bessie从起点出发,可以向上下左右四个方向行走。 ... 阅读详情

题目描述:点击打开链接

        题意是在某一时刻t会有一个陨石落下来,会落到坐标为x,y的地方,陨石落下来之后不但x,y会遭到破坏,和x,y四邻接的点也会被破坏。现在Bessie的初始位置在原点,每一个单位时间只能平行于坐标轴,移动一个单位距离,题目要求需要几个单位时间Bessie才能移动到安全的地方(只能运动在坐标轴和第一象限)。由于陨石落下来之前,某个点还是可以走的,直到t时刻陨石落下来破坏掉该点。

 

        明确题意后首先想到的是BFS,预处理是这题的难点,由于某个点遭到破坏后就不能走了,因此如果有多次遭破坏只要记录改点遭破坏的最早的时间就可以了。bfs的时候如果移动步数大于等于该点被破坏的时间,那么该节点就不能被扩展。直到走到不会被陨石破坏的点为止。

 

代码如下:

        数组mp记录了每个点被陨石破坏的最早时间,如果不会被破坏则用-1表示(由于题目中t可以是0,因此不能用0表示不会被破坏,在这里wa了一次)

 

#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
using namespace std;

int mp[309][309];
int dir[4][2] = {{1,0}, {-1,0}, {0,-1}, {0,1}};
int visit[309][309];
struct State
{
	int x, y, step;
	State(int x, int y, int step) : x(x), y(y), step(step) {}
};

bool inFirstQuadrant( int x, int y )
{
	if ( x >= 0 && y >= 0 ) return true;
	return false;
}

void setPoint(int x, int y, int t)
{
	if ( mp[x][y] == -1 ) mp[x][y] = t;
	else mp[x][y] = min(mp[x][y], t);
}

void destroyPoint( int x, int y, int t )
{
	setPoint(x, y, t);
	for ( int i=0; i<4; i++ )
	{
		int tx = x + dir[i][0];
		int ty = y + dir[i][1];
		if ( inFirstQuadrant( tx, ty ) ) 
			setPoint( tx, ty, t );
	}
}

void BFS()
{
	State origin( 0, 0, 0 );
	queue<State> Q;
	Q.push( origin );
	visit[0][0] = 1;
	while( ! Q.empty() )
	{
		State cur = Q.front();
		Q.pop();
		if ( mp[cur.x][cur.y] == -1 )
		{
			cout << cur.step << endl;
			return;
		}

		for ( int i=0; i<4; i++ )
		{
			int x = cur.x + dir[i][0];
			int y = cur.y + dir[i][1];
			if ( inFirstQuadrant(x, y) && !visit[x][y])
			{
				if ( cur.step + 1 < mp[x][y] || mp[x][y] == -1)
				{
					State p( x, y, cur.step + 1 );
					Q.push( p );
					visit[x][y] = 1;
				}
			}
		}
	}
	cout << -1 << endl;
}



int main()
{
	int m;
	while ( cin >> m )
	{
		memset( mp, -1, sizeof(mp) );
		memset( visit, 0, sizeof(visit) );
		int x, y, t;
		for ( int i=0; i<m; i++ )
		{
			cin >> x >> y >> t;
			destroyPoint( x, y, t );
		}

		BFS();

	}
	
	return 0;
}


 

实用算法实现-第13篇 搜索(盲目搜索) 在人工智能中,盲目搜索是相对于启发式搜索来说的。 13.1    广度优先搜索 《算法导论》中,广度优先(Breadth-First)搜索树的伪代码如下: BFS(G,s) 1  for each vertex u ∈ V[G] - {s} 2       docolor[u] ← WHITE 3          d[u] ← ∞ 4          ∏[u] ← NIL 阅读详情

相关推荐

Camera ITS测试

一、手机端设置: 将 CtsVerifier.apk 安装到设备上, 连接上linux主机。 二、主机端设置: 基础:CTS测试运行环境 然后,主机安装python2.7,及numpy/scipy/matplotlib/opencv 栈和 python 成像库。按照下面的命令依次安装: sudo apt­-get install python-­numpy sudo apt-­g...

wangubuntu的专栏 7785

pku 1724 ROADS BFS +优先队列

http://poj.org/problem?id=1724 题意: Bob现在有的钱数为k,他想从城市1到城市n,给出m条连接两个城市的有向边,并且给出路的长度w,和经过这条路要交的钱数c。问Bob在花的过路费不超过k的前提下能到达城市n的最短路径为多长。 思路: 才开始我想spfa来做,开两个数组dis记录距离最短disw记录话费最小,在松弛的时候进行距离与费用的限制来进行,可是发现当...

weixin_34319640的博客 101

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8856

[bfs] Meteor Shower POJ - 3669 预处理地图

https://vjudge.net/problem/12685/origin 1.玩家从原点(0,0)出发 2.有流星在一定时间里往地图上砸。砸到以后,这个点以及上下左右共5个点就再也不能行走了(砸以前可以走) 3.玩家每个单位时间必须要上下左右走一格,只能在第一象限中移动 4.找到最短的行走距离,保证这个点是安全的,即所有流星都不会砸到这个点 // 不一定要离开300x300的范围 让我楞了好...

蒟蒻的最后的倔强 269

RL调参侠之BipedalWalker BipedalWalkerHardcore SAC

前几天用PPO训练了个很一般的agent: RL调参侠之BipedalWalker PPO 我看SpinningUp上面说PPO和SAC是两个领域里各自的State_of_the_art的方法,所以就打算跑SAC试试看,之前因为Open AI Five的原因,一直感觉PPO很牛掰,实际上现在很多自动驾驶的算法也是用PPO在跑,毕竟有一个“必定能够提升期望”的理论保证在这里,我理解这对做项目很大的诱惑。 不过我跑出来的结果明显是SAC更好。 调参侠时间 策略熵的权重alpha用的0.2,我一开始没有看SAC的

weixin_48370148的博客 2101

Java云上香云祭祀线上祭祀系统小程序源码

云上香云祭祀线上祭祀系统”,不仅是一种祭祀方式的创新,更是对传统文化的一次深情致敬。它让我们明白,无论时代如何变迁,对亲人的怀念与尊重永远不会改变。在这个特别的平台上,让我们共同守护那份跨越时空的爱与思念,让心灵得以安放,让生命之树常青。🌳。

2401_84413757的博客 803

BFS搜索:POJ No 3669 Meteor Shower

BFS搜索:POJ No 3669 Meteor Shower #include <iostream> #include <cstring> #include <queue> #include <cstdio> #include <cstdlib> #include <...

豆子 186

用Python+OpenCV搞定线激光相机标定:从棋盘格到3D点云的保姆级实战

本文详细介绍了使用Python和OpenCV进行线激光相机标定的全流程实战,从硬件准备到3D点云重建。涵盖相机内参标定、激光平面方程拟合、三维重建等关键技术,提供完整的代码实现和工程优化建议,帮助开发者实现毫米级精度的工业检测和三维测量系统。

weixin_29227425的博客 286

POJ_3669 Meteor Shower(BFS)

题目请点我 题解: 这道题涉及到状态转换,所以放入到队列里广搜是没错的。最开始的思路是设定一个时间轴,按照每刻能走到的地方去扩展,按照炸弹的爆炸去排除一些点。这种思路是可以过得,但是可能稍微麻烦了一点,其实可以换一种思路,在最开始标记出所有会被炸到的点,然后可以对不会再扩展的点直接进行判断,而可以扩展的点一样拓展,可能会快一点。觉得自己的方法是笨了一点,可能会很浪费时间,而且会感觉很乱。 另外

EaShion1994的专栏 662

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 104

16. SAP Fiori Elements 应用里图片字段(Image)的显示原理介绍

很多朋友向我反映,学习了 一段时间的 SAP Fiori Elements 开发,但是感觉整套体系对于自己来说还是个黑盒子,很多技术点,看了 SAP 官方帮助文档后,觉得自己懂了,但是一旦需要自己动手做一些东西出来时,又觉得一片茫然。 其实笔者自己也经历过这个过程。究其原因,还是大家对 Fiori Elements 一些技术细节没有理解,对 SAP 官方的知识点仅仅停留在记忆,甚至是死记硬背上面。 不过没有关系,本教程笔者会刻意设置一些练习,让大家动手,在实战中逐渐熟悉 Fiori Elements 这

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 758

PKU 1753 Flip Game(Bfs+ 位压缩状态)

        一个不错的Bfs,它的价值在于状态的保存,做这道题就是为了学习如何用位存储状态。虽然看了网上的思路,也算入了门吧!       题目的意思:   给定一个4*4格的棋盘,每一个格子是黑的或者白的,现在有一个规则:每当把一个格子变成它相反的颜色,那么相邻的格子(上下左右)的颜色也将变成它与原来相反的颜色。那么,给出一种算法,对于一个给定的棋盘,把它的格子全部变成白色或黑色。 

1813

OceanBase数据库:与MySQL和Oracle的函数差异分析

OceanBase数据库兼容性解析:MySQL与Oracle模式深度比较 摘要:OceanBase通过独特的双模式架构,实现了对MySQL和Oracle的高度兼容。文章首先分析了OceanBase的兼容性架构,包括SQL解析层、优化器层和执行引擎层的差异化设计。随后对比了两种模式在数据类型、SQL语法、函数支持等方面的兼容性差异,其中MySQL模式兼容5.7版本大部分功能,Oracle模式则支持155个内置函数和PL/SQL特性。最后提出了模式选择的六大考量因素,包括现有系统基础、功能需求和迁移成本等,为数

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1228

pku 1101 bfs

/*//很很很经典的bfs, 这也是我第一次正式用bfs来刷题, 感受颇深://one.cpp是用bfs来解决从一个点到另一个点的最短路程长度的方法(写的有点冗杂)注意的几点: 1.为什么用bfs而不是dfs来解决最短路径长度问题? dfs搜索到另一个点后将所经历的点设为visited,不能再次访问; 而bfs是宽度优先的策略,则可以涉及每一条路径. 故,求一个可

笑风生 938

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

POJ 3669 Meteor Shower(bfs+优先队列)

Meteor Shower Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12487 Accepted: 3375 Description Bessie hears that an extraordina

Chunzhen的博客 2653

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ 1915 Knight Moves【广搜】

Description BackgroundMr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him can move knights from one position to another so fast. Can you beat him?The ProblemYour task is to wr...

weixin_33971205的博客 527

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

九度OJ 题目1534:数组中第K小的数字(二分解)

题目链接:点击打开链接 题目描述: 给定两个整型数组A和B。我们将A和B中的元素两两相加可以得到数组C。 譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6]。 现在给你数组A和B,求由A和B两两相加得到的数组C中,第K小的数字。 输入: 输入可能包含多个测试案例。 对于每个测试案例,输入的第一行为三个整数m

Jackie_Zhu的专栏 2425

九度OJ 题目1532:棋盘寻宝扩展(动态规划)

题目链接:http://ac.jobdu.com/problem.php?pid=1532 现在有一个8*8的棋盘,上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于100),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角。从棋盘的左上角移动到右下角的时候的,每次他只能向下或向右移动一步,并拿走对应棋盘上的

Jackie_Zhu的专栏 2197

PKU 3009 Curling 2.0(穷举搜索+剪枝)

题目链接 点击打开链接 题意是一块石子,从起始位置出发,题目中起始位置为2,每次移动,它会朝着某一个方向一直运动知道碰到墙或者滑出界外,或者到达终点(题目中是3表示);如果碰到墙,则相应的墙块消失,并且求停止在墙的前面一个位置,需要再次移动,直到到达目标位置。 每次移动石子,石子都会朝同一个方向移动,遇到下面情况就会停止: 1.石子碰到墙块 2.石子滑出界外 3.石子到达终点现在要求石子从起点

Jackie_Zhu的专栏 1947

动态规划 HDU 2546 饭卡

在acm群里看到了这样的一个题目,拿过来看了一下,感觉还蛮有意思的,题目大意是饭卡上有m余额,但是学校有个规定,饭卡余额少于5元就不能买东西,现在有n件商品,每件商品都有一个价格。要求买好商品后余额最少。         题目链接   HDU 2546 饭卡         看到题目就想到了背包问题,在一个m-5的背包里尽量装满东西,装满后放最后一个物品,解肯定在放完这个物品之后。 最直接的想

Jackie_Zhu的专栏 1597

PKU 1064 Cable master

题目链接:点击打开链接 有n段绳子,给定n段绳子的长度,单位为厘米。求能够把这些绳子分成k段的最长的段的长度。题目中的trick是最小是1cm,长度不能小于1cm,因此要转换成int来解,然后二分可以截得的绳子的长度。 #include #include #include using namespace std; #define INF 100000000 int l[10009

Jackie_Zhu的专栏 1497

PKU 1511 Invitation Cards (SPFA+邻接表)

题目链接:点击打开链接         题目需要求从原点到所有点的最短距离之和和所有点到原点的最短距离之和,在求所有点到原点最短距离的时候用到了一个技巧:即把图反向,求原点到所有其他点的最短距离,这样用一次SPFA就可以将所有点到原点的最短距离求出来了。           另外也没什么好说的,纯SPFA。另外用优化到VlogE的dijkstra貌似也能过,有空的时候再写个。   代码如

Jackie_Zhu的专栏 1381

PKU 1797 Heavy Transportation(Kruscal)

题目的大意是,有一个图,要从编号为1的点走到编号为n的点,每条路都有一个承重量,那么从1到n能够运输的重量就取决于这条路上最小的那条边的承重量。要求的是走一次能够运输的最大的重量(即所有可以走的路经中,使得最小承重梁的那条边最大)。

Jackie_Zhu的专栏 1257

Best coder 2014-3-14题解

zhx's submissions 题目链接 签到题,模拟大数加法,不用进位(要用char[]读入,string超时) zhx's contest 题目链接 可以很快推导出公式为2^n -2, 这里由于n和mod都是在long long范围内,因此需要快速乘,但是也会导致long long * long long 溢出,因此将乘法改造成快速加。zhx and contest 题目

Jackie_Zhu的专栏 1180
上一篇: PKU 3009 Curling 2.0(穷举搜索+剪枝)
下一篇: PKU 1511 Invitation Cards (SPFA+邻接表)
Jackie_Zhu
博客等级 码龄18年 343粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值