Hdu 1429 胜利大逃亡(续)

hdu1429 胜利大逃亡(续) (广搜+状态压缩) 题目: 胜利大逃亡(续) 链接: http://acm.hdu.edu.cn/showproblem.php?pid=1429 yy: 本来做了道自己认为不太简单的题很高兴。。但是一看。。夏天的风直接把他归类到搜索level1里面了。。。哎。。这就是差距啊。。。 思路: 广度优先搜索 + 状态压缩 由于只有10把钥匙,所以可以直接用状态压缩来做。。。其他就不说了,其实仔细一看, 阅读详情

胜利大逃亡(续)

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 22   Accepted Submission(s) : 10
Font: Times New Roman | Verdana | Georgia
Font Size: ← →

Problem Description

Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……

这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标中的其中一个。魔王每t分钟回地牢视察一次,若发现Ignatius不在原位置便把他拎回去。经过若干次的尝试,Ignatius已画出整个地牢的地图。现在请你帮他计算能否再次成功逃亡。只要在魔王下次视察之前走到出口就算离开地牢,如果魔王回来的时候刚好走到出口或还未到出口都算逃亡失败。

Input

每组测试数据的第一行有三个整数n,m,t(2<=n,m<=20,t>0)。接下来的n行m列为地牢的地图,其中包括:

. 代表路
* 代表墙
@ 代表Ignatius的起始位置
^ 代表地牢的出口
A-J 代表带锁的门,对应的钥匙分别为a-j
a-j 代表钥匙,对应的门分别为A-J

每组测试数据之间有一个空行。

Output

针对每组测试数据,如果可以成功逃亡,请输出需要多少分钟才能离开,如果不能则输出-1。

Sample Input

4 5 17
@A.B.
a*.*.
*..*^
c..b*

4 5 16
@A.B.
a*.*.
*..*^
c..b*

Sample Output

16
-1


做完这题,我感觉自己不得不写一篇解题报告来解释了;

这题最大的精华就是它用了三维数组;

分析题目,就是当你拿到钥匙后,你该如果去寻找门,

因为,当你走到拿钥匙的地方的时候,可以门已经被你标记为走完了,

所以,大神们用了三维数组来解决,

当你拿到钥匙后,就进入另一个从未被标记过的二维空间,

再次进行广搜,就是,当你拿到钥匙,你就进入一个空间,当你打开一扇门,你就掉出一个空间,

这就是这道题目的精华所在,I think


#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node
{
	int x, y, t, key;
};
int n, m, t;
int sx, sy;
char g[25][25];
bool vis[25][25][1<<10];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
bool flag;

void myscanf()
{
	for(int i=0;i<n;i++)
	{
		scanf("%s",g[i]);
		for(int j=0;j<m;j++)
		{
			if(g[i][j]=='@')
			{
				sx = i;
				sy = j;
				g[i][j]='.';
			}
		}
	}

}


void bfs()
{
	queue<node>q;
	node cur, v;
	cur.x = sx;
	cur.y = sy;
	cur.t = 0;
	cur.key = 0;
	vis[cur.x][cur.y][cur.key] = true;
	q.push(cur);
	
	while(!q.empty())
	{
		v = q.front();
		q.pop();
		if(v.t<t && g[v.x][v.y]=='^')
		{
			printf("%d\n",v.t);
			flag = true;
			return;
		}
		for(int i=0;i<4;i++)
		{
			cur.x = v.x + dx[i];
			cur.y = v.y + dy[i];
			cur.t = v.t + 1;
 			cur.key = v.key;
            if(g[cur.x][cur.y]>='a'&&g[cur.x][cur.y]<='z')
            cur.key=v.key|(1<<(g[cur.x][cur.y]-'a'));
 			if(g[cur.x][cur.y]=='*'||cur.t>=t)	continue;
 			else if(cur.x<0||cur.x>=n||cur.y<0||cur.y>=m||vis[cur.x][cur.y][cur.key])	continue;
 			else 
 			{
 				vis[cur.x][cur.y][cur.key] = true;
 				if(g[cur.x][cur.y]>='A' && g[cur.x][cur.y]<='Z')
 				{
 					if(cur.key&(1<<(g[cur.x][cur.y]-'A')))
 					{
 						q.push(cur);
 					}
 				}
 				else q.push(cur);
 			}
		}
	}
}

int main()
{
	while(scanf("%d%d%d",&n,&m,&t)!=EOF)
	{
		flag = false;
		memset(vis,false,sizeof(vis));
		memset(g,0,sizeof(g));
		myscanf();
		bfs();		
		if(!flag)	printf("-1\n");
	}

	return 0;
}



【驭风计划 机器学习】实验6 基于集成学习的 Amazon 用户评论质量预测 ¶随着电商平台的兴起,以及疫情的持续影响,线上购物在我们的日常生活中扮演着越来越重要的角色。在进行线上商品挑选时,评论往往是我们十分关注的一个方面。然而目前电商网站的评论质量参差不齐,甚至有水军刷好评或者恶意差评的情况出现,严重影响了顾客的购物体验。因此,对于评论质量的预测成为电商平台越来越关注的话题,如果能自动对评论质量进行评估,就能根据预测结果避免展现低质量的评论。本案例中我们将基于集成学习的方法对 Amazon 现实场景中的评论质量进行预测。 阅读详情

相关推荐

基于稀疏表示字典学习的图像超分辨率-杨建超论文解析

文章:《Image Super-Resolution via Sparse Representation》 作者:杨建超 信号稀疏的定义: 令字典D的原子个数M,信号维度为N,则有以下三种关系: M = N时,D为完备的; M > N时,D为冗余的; M>>N时, D为过完备的。 图解如下: 借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨...

ycc18829026593的博客 7637

HDOJ1429(胜利大逃亡(续))

胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 611Accepted Submission(s): 213 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这...

weixin_30711917的博客 2340

避坑!!!Stata双重机器学习(DML)遇到的问题及解决方式

除了上述代码,我还在Anaconda Navigator图形界面来更新conda,更新过的小伙伴应该都知道,这个过程非常漫长,我大概经历了2-3天,在这个过程中电脑一直运行,但是很不幸,无论哪种方式,最终都没有更新到最新版本。安装成功之后,我抱着试一试的心态再次在stata18MP中运行,没有想到,这次竟然运行成功了!我之前一直用的是stata17MP版本,在运行DML的时候,代码一直出错,我以为是python路径没有设置好的原因,就各种在python上面下功夫,经过各种查找后,确定DML必须要在。

王樰沫 3847

Hdu 1429 胜利大逃亡(续) 分类: Brush Mode ...

胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other)Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 22Accepted Submission(s) : 10 Font: Times New Roman | Verdana | Georgia ...

weixin_34160277的博客 115

史上最全的Logisim存储系统实验教程(基于华中科技大学计算机组成原理实验)内赋源码下载

本博客是最全的最好的解释的华中科技大学计算机组成实验存储系统实验,本博客给出了电路实现,也给出了使用电路的原因有利于新手学习十分详细。并且内赋源码下载。

qq_62325622的博客 2万+

5分钟搞定:用Ollama在MacBook上本地运行Qwen3大模型(附避坑指南)

本文详细介绍了如何在MacBook上使用Ollama快速部署和运行Qwen3大模型,包括安装步骤、性能优化技巧及常见问题解决方案。Ollama作为一款轻量级工具,特别适合M系列芯片的Mac用户,支持多种量化版本,显著降低资源消耗,提升推理速度。

sql99的博客 822

hdu1429胜利大逃亡(bfs)

胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9204Accepted Submission(s): 3327 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨...

weixin_30933531的博客 126

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

HDU-1429 胜利大逃亡(续)

HDU 1429 胜利大逃亡(续) Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标中的其中一个。魔王每t分钟回地牢视察一次...

你呢的博客 1314

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 267

RSA算法详解:万字文章详解RSA的加密与解密

为了彻彻底底的研究明白RSA算法,真的是。。煞(lei)费(si)苦(wo)心(le),首先我希望自己前前后后、彻彻底底的琢磨明白,其次我也希望我把他分享出来以后,大家都能读得懂,这篇文章真的是我迄今为止写的又臭又长的一篇文章了,但是我能保证的是,你读完了以后,绝对不会再问RSA是啥玩意儿了。。

布啦啦 7668

HDU - 1429 - 胜利大逃亡(续)

胜利大逃亡(续)题目传送:HDU - 1429 - 胜利大逃亡(续)基础广搜题,注意是用位运算来判断的是否有钥匙的。少写一个字母找了好久的bug。。好久的bug。。的bug。。bug。。gAC代码:#include <map> #include <set> #include <cmath> #include <deque> #include <queue> #include <stack> #inc

Never say never 1163

fragstats:景观指数趋势分析

优快云@_养乐多_本文将介绍景观指数时间序列的趋势分析,包括趋势类型、斜率、截距等。以及景观指数突变分析所用的软件和 python 代码。结果如下图所示,

养乐多的博客 2859

hdu1429胜利大逃亡(续)(状态压缩+bfs)

题目链接: 啊哈哈,点我点我 题意及思路 两个状态压缩+bfs的题,两个题其实是一样的,所以我讲一个。。。就选1429吧。。 最开始我以为跟普通的bfs一样,所以直接写了一个朴素的bfs,一跑,前两组数据对了,但是第三组不对,一看,走过的还可以走啊,所以不能标记,结果我的bfs乱改,最后 毫无疑问改成了死循环。所以看题解。。。 思路:因为有10中不同的钥匙,每种都有两种状态,所以结合

大洋深处 2199

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

hdu 1429 胜利大逃亡(续)

hdu 1429 胜利大逃亡(续)         这是一道广搜题. 刚开始看有点思路, 但是实现起来需要定义一些相关的结构体,比较麻烦.尤其是怎么处理拿到钥匙和开门......         下面这种方法能为下次做类似的题提供更多的想法.         后来看到了某大神的一种更好的办法来处理钥匙和开门的问题, 那就是位运算来模拟拿钥匙和开门. 看了一篇思路就很清晰了.

happen_zhang 1597

lwip-2.0.3

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

HDU 1429.胜利大逃亡(续)

胜利大逃亡(续) Time Limit:2000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 1429 Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignati...

weixin_30558305的博客 133

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

胜利大逃亡(续) HDU - 1429

胜利大逃亡(续) HDU - 1429

weixin_29216119的博客 292

HDU1429 胜利大逃亡(续)

http://acm.hdu.edu.cn/showproblem.php?pid=1429学习位压缩很好的一道题,因为只有10把钥匙,那么可以把10钥匙压缩二进制,比如1000就表示身上只要第4把钥匙的状态,110表示带有第2把和第3把钥匙,那么要判断当前的钥匙串有没有能打开当前门钥匙,那么就只要一个&运算就可以,因为11101110&00100000==00100000 这样就说明那一把钥

3081

胜利大逃亡(续) HDU-1429

胜利大逃亡(续) HDU-1429 题目链接 思路:状态压缩+bfs 状态压缩很常用也很简单,网上有很多关于状态压缩的博客,我就不再赘述。因为A-J只有十把钥匙和门,而状态只有找到和没有找到钥匙,利用二进制进行状态压缩。 坑:时间到了则判为失败,而不是被抓回起点。#include <bits/stdc++.h> #define maxn 22 using namespace std; in

acmer_guo的博客 317

HDU 1429-胜利大逃亡(续)

A - 胜利大逃亡(续) Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1429 Appoint description:  System Crawler  (2015-11-09) Description

梧桐下的四叶草 459

hdu 1429胜利大逃亡(续)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1429 一开始想了好几种方法。。最后实验都错了。。 要么是就是算法思想错误。。 然后以为可以这样。。果断。。内存超出。 下面是错误代码。。。 #include #include #include using namespace std; #define N 21 int n,m,t; ch

1446

Syins写的bfs例题——胜利大逃亡(续)HDU1429

胜利大逃亡(续) Time limit2000 ms Memory limit32768 kB Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟...

weixin_45676801的博客 324

C - 胜利大逃亡(续) HDU - 1429

C - 胜利大逃亡(续) HDU - 1429 #include<cstdio> #include<cstring> #include<queue>using namespace std;int n,m,t; char mp[100][100]; struct data { int x,y; int cost; int sta;}st,en; int dx[]={-1,0,1

neuike的博客 380

hdu1429 胜利大逃亡(续)

题目链接 跟简单搜索不同的是,这个钥匙开门机制,确实很难去想。后来看到了别人将其转化为二进制数进行存储表示钥匙状态,因为最多10把钥匙,所以只需要2^10就可以存下,而且要注意,因为在取钥匙开门的过程中,可能会走过一个点数次,所以需要将钥匙状态存储并判断是同一状态下,有无重复走过。 if(maps[next.x][next.y] >= 'a' &&maps[next.x][next.y] <= 'j'){ int temp1 = maps[next.x][ne

CUCUC1的博客 205
上一篇: Hdu 1010 Tempter of the Bone
下一篇: JAVA 显示图片的简单源码
梁千仞
博客等级 码龄15年 12粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值