PKU 3669 Meteor Shower(BFS)

本文介绍了一个基于广度优先搜索(BFS)的游戏问题解决方案。玩家角色Bessie需要在陨石降落并破坏周围区域前,从原点出发逃到安全地带。文章详细解析了如何通过BFS算法寻找最快逃生路径,并附上了C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:点击打开链接

        题意是在某一时刻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;
}


 

转载于:https://www.cnblogs.com/JackieZhu/p/4190453.html

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值