(poj 3322 Bloxorz I)<爆搜?>

40-Type-C电路设计 Type-C电路设计 阅读详情

传送门


Solution

居然1A太突然

这道题最重要的是状态的表示
vis[x][y][0]表示位置为(x,y)且是竖着放
vis[x][y][1]表示位置为(x,y)且是横着放,占(x,y)和(x+1,y)两个位置
vis[x][y][2]表示位置为(x,y)且是横着放,占(x,y)和(x,y+1)两个位置
最后注意判断可行就好


Code

// by spli
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<queue>
#define y1 ccccc
using namespace std;

const int N=510;
int n,m;
char s[N][N];
int tx,ty;
bool vis[N][N][4];
struct node{
    int x,y,t,k;//t表示步数,k表示状态
};
queue<node>q;

void bfs(){
    node f;
    int x,y,t;
    while(!q.empty()){
        f=q.front();
        q.pop();
        x=f.x;y=f.y;t=f.t;
        if(x<1||x>n||y<1||y>m) continue;
        if(f.k==0&&s[x][y]=='E') continue;
        if(f.k==1&&x+1>n) continue;
        if(f.k==2&&y+1>m) continue;
        if(x==tx&&y==ty&&f.k==0){
            printf("%d\n",t);
            return;
        }
        if(f.k==0){
            if(!vis[x+1][y][1]&&x+1<=n) q.push((node){x+1,y,t+1,1}),vis[x+1][y][1]=1;
            if(!vis[x-2][y][1]&&x-2>=1) q.push((node){x-2,y,t+1,1}),vis[x-2][y][1]=1;
            if(!vis[x][y+1][2]&&y+1<=m) q.push((node){x,y+1,t+1,2}),vis[x][y+1][2]=1;
            if(!vis[x][y-2][2]&&y-2>=1) q.push((node){x,y-2,t+1,2}),vis[x][y-2][2]=1;
        }
        if(f.k==1){
            if(!vis[x+2][y][0]&&s[x+2][y]!='E'&&x+2<=n) q.push((node){x+2,y,t+1,0}),vis[x+2][y][0]=1;
            if(!vis[x-1][y][0]&&s[x-1][y]!='E'&&x-1>=1) q.push((node){x-1,y,t+1,0}),vis[x-1][y][0]=1;
            if(!vis[x][y+1][1]&&y+1<=m) q.push((node){x,y+1,t+1,1}),vis[x][y+1][1]=1;
            if(!vis[x][y-1][1]&&y-1>=1) q.push((node){x,y-1,t+1,1}),vis[x][y-1][1]=1;
        }
        if(f.k==2){
            if(!vis[x+1][y][2]&&x+1<=n) q.push((node){x+1,y,t+1,2}),vis[x+1][y][2]=1;
            if(!vis[x-1][y][2]&&x-1>=1) q.push((node){x-1,y,t+1,2}),vis[x-1][y][2]=1;
            if(!vis[x][y-1][0]&&s[x][y-1]!='E'&&y-1>=1) q.push((node){x,y-1,t+1,0}),vis[x][y-1][0]=1;
            if(!vis[x][y+2][0]&&s[x][y+2]!='E'&&y+2<=m) q.push((node){x,y+2,t+1,0}),vis[x][y+2][0]=1;
        }
    }
    printf("Impossible\n");return;
}

int main(){
    while(scanf("%d%d",&n,&m)&&n+m){
        memset(vis,0,sizeof(vis));
        while(!q.empty()) q.pop();
        int cnt=0;
        for(int i=1;i<=n;++i){
            scanf("%s",s[i]+1);
            for(int j=1;j<=m;++j){
                if(s[i][j]=='#'){
                    vis[i][j][0]=1;
                    vis[i][j][1]=1;
                    vis[i][j][2]=1;
                    if(i-1>=1) vis[i-1][j][1]=1;
                    if(j-1>=1) vis[i][j-1][2]=1;
                }
                if(s[i][j]=='O') tx=i,ty=j;
                if(s[i][j]=='X') cnt++;
            }
        }
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j){
                if(s[i][j]=='X'){
                    if(cnt==1) q.push((node){i,j,0,0}),vis[i][j][0]=1;
                    if(cnt==2){
                        if(s[i+1][j]=='X') q.push((node){i,j,0,1}),vis[i][j][1]=1;
                        if(s[i][j+1]=='X') q.push((node){i,j,0,2}),vis[i][j][2]=1;
                    }
                    break;
                }
            }
        bfs();
    }
    return 0;
}

你说我代码丑?!
右上角谢谢

Windows版本Carla(含RoadRunner插件)源码安装+RoadRunner地图导入 通过跳转浏览器账号密码登录github,不要选择Fine-grained personal access tokens,在git clone时会显示非授权,也不要使用Windows凭据!核心指令:编译PythonAPI–make PythonAPI,,编译Server–make launch,封装”游戏“–make package。完成安装后,在已安装->2022版本右侧->更多->导入配置,选择配置文件(需将配置文件内容更新为手册内容,如下图)->详细信息,更新。不要修改版本,执行上面指令即可! 阅读详情

相关推荐

DLMS-Blue-Book蓝皮书—曲线类

attribute_index 1 指的是第 1 个属性(即 logical_name),attribute_index 2 指的是第 2 个属性,等等;如果其他“曲线通用类”对象捕获了这个缓冲区,它们的缓冲区也将被清空,以保证它们的缓冲区条目是同质的。如果捕获对象是曲线通用类的缓冲区,则 data_index 标识缓冲区(即列)中的捕获对象(即内部曲线通用类中的列);如果曲线通用类已排序,则调用捕获方法将把新条目存储在缓冲区中的适当位置,移动所有后续条目,并可能丢失最不相关的条目。

一个bug是bug,多个bug能work 1452

POJ 3322 Bloxorz I(BFS:求迷宫最短路径)

POJ 3322 Bloxorz I(BFS:求迷宫最短路径) http://poj.org/problem?id=3322 题意:有一个R*C的网格,网格中有3种格子:正常格子,脆弱格子以及空格子.现在给你一个1*2立方体的初始位置,要你求出将该立方体移动到终点所需要的最小步数. 分析:其实和一般的BFS求最短路径没本质区别,就是状态设计和移动可能复杂点.        我们令1

code 2192

华为AR3260路由器NAT回流配置实战:从WEB界面到命令行的完整避坑指南

本文详细解析了华为AR3260路由器NAT回流(Hairpin NAT)的配置原理与实战方法。针对内网用户无法通过公网地址访问内部服务器的常见问题,文章不仅剖析了WEB界面配置的常见报错原因,更提供了清晰、可靠且一劳永逸的命令行(CLI)配置方案与排错指南,帮助企业网络工程师彻底解决内外网访问不一致的难题。

u6v7w8x的博客 874

POJ3322(bfs+状态限制)

题目地址 POJ3322 一道代码量比较大的题目 遇见这种地图bfs的要学会建立常数数组保存信息 判别式子尽量用函数(如果比较繁杂的话) (不错的搜索题) #include<iostream> #include<queue> #include<algorithm> #include<cstdio> using namespace std; st...

ssw的博客 344

Linux内存压力测试工具【memtester】详且精

对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。

weixin_44118923的博客 1万+

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9915

POJ3322滚箱子游戏(不错)

题意:       讲的是一个游戏,就是在一个平面上滚动一个1*1*2的长方体的游戏,在本题里面的游戏规则是这样的: (1)      一开始给你箱子的状态,可能是横着也可能是竖着。 (2)      每一次可以滚动箱子,但是每次滚动到的位置(1个或者2个)都必须不能是空的。 (3)      有的位置只能经得起箱子一半的重量,有的能经得起真个箱子的重量,经得起一半的格子意思就是不能

天使也掉毛 1780

6轴机械臂(拟人臂+球形腕(三轴相交于一点))正逆运动学求解

1、DH坐标下机械臂参数 theta=[pi/10,pi/2,pi/4,-pi/4,pi/4,-pi/8];%关节角度 a=[0, 0.260, 0.025, 0, 0, 0];%连杆长度 d=[0, 0, 0, 0.280, 0, 0.072];%偏移距离 alpha=[pi/2, 0, pi/2, -pi/2 , pi/2, 0];%RBR型6轴机械臂 使用...

qq_33374294的博客 7883

POJ3322解题报告

初学BFS接触到的第一个比较有难度的题,没想在网上找代码就自己吭哧了半天。   开始以为可以用map,编完才发现不可以。   后来想想也就是用map的一个count功能,就自己编了一个count结构体的函数,用了vector。然后TLE,想来也是判断结点是否已经存在过太浪费时间。然后想通了,用三位数组id[3][maxn][maxn]判断是否存在过这个结点。   后来WA是因为没有清空队列。

博客 394

ican项目四汽车零件智能测量

ican项目四汽车零件智能测量

weixin_72050316的博客 561

外设测试 - ATAES132A 加解密芯片测试

原理 使用芯片官方提供的读写操作库,进行先写后读并校验,确认数据一致。 示例代码 int main(void) { uint8_t ret; aes132p_enable_interface(); ret = write_memory_test(); if (ret != AES132_FUNCTION_RETCODE_SUCCESS) { aes132p_disable_interface(); printf

一个软件工程师的技术笔记 858

POJ3322-经典的游戏搜索问题

临近毕业真是各种琐事多,好不容易写完几万字蛋疼的论文,又接着户口档案挂靠,毕业旅游,20多个离校盖章,签证被check了几个星期还没消息,希望8月初能走啊。  各种事情之下,人就是懒加心散,好久没写代码,也时间写,再说也不知道写啥。突然心血来潮还是刷刷题,不然都忘记代码怎么写了。   Poj33222,Bloxorz,一个很有意思的小游戏,一道中等的搜索题目。该题目也是相关游戏的AI算法的一个

算法,时空数据挖掘 1532

《R 语言卡方检验全解析:手写代码实现与详细步骤》卡方检验

卡方检验(Chi-Square Test)是一种常用的统计方法,主要用于检验分类变量之间的独立性或拟合优度。在医学、社会科学等领域中,卡方检验常用于分析两个或多个分类变量之间的关系。以下是卡方检验的全面解析,包括实现代码和手写公式。χ2∑Ei​Oi​−Ei​2​Oi​Ei​dfr−1c−1rcdfk−1k如果卡方统计量大于临界值,或 p 值小于显著性水平(如 0.05),则拒绝原假设。

Mrrunsen的博客 685

POJ 3322 Bloxorz I

目录 一.题目简介 可以先玩一下这个游戏 点击打开链接 二.题解 三.代码 谢谢! 一.题目简介 可以先玩一下这个游戏 点击打开链接 二.题解 这道题目就是波尔皮,很简单,就是爆搜一通,BFS直接暴力物体从起点到终点的全过程。 但是就一个难点,对于每一个状态的判重和转移。 首先,我们要明白有三种情况,分别是上面图片中的三种情况,我分别称其为:立(0)、横(2)、...

weixin_43908980的博客 518

SAP B1中文培訓教材_SDK

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Bloxorz I POJ - 3322

Bloxorz I POJ - 3322

weixin_29216119的博客 1178

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Bloxorz POJ3322

Bloxorz POJ3322 思路 题干在这:POJ3322 学习广搜,抄的算法竞赛进阶指南的事例代码 ac代码 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<queue> using namespace std; str...

没有自旋的π介子 229

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ3322bloxorz

这道题目很适合学习广度优先搜搜的小盆友: Bloxorz是一个风靡世界的小游戏。Bloxorz的地图是一个N行M列的矩阵,每个位置可能是硬地(用.表示)、易碎地面(用E表示)、禁地(用#表示)、起点(用X表示)或终点(用O表示)。你的任务是操作一个1*1*2的长方体。这个长方体在地面上有两种放置形式,“立”在地面上(1*1的面接触地面)或者“躺”在地面上(1*2的面接触地面)。在每一步操作中,可以按上下左右四个键之一。按下之后,长方体向对应的方向沿着棱滚动90度。任意时刻,长方体不能有任何部位接触禁.

zhagoodwell查的博客 1244

【POJ 3322】 Bloxorz I

【题目链接】 http://poj.org/problem?id=3322 【算法】 广度优先搜索 【代码】 #include <algorithm> #include <bitset> #include <cctype> #include <ce...

122

poj3322 Bloxorz I

bfs暴搜

YHaX的博客 551

POJ3322 Bloxorz I 题解

20min内单独现写AC此题,DFS、BFS基本过关了。

weixin_42178241的博客 274

POJ 3322 BFS

题意 传送门 POJ 3322 Bloxorz I 题解 长方体当前的状态为其横、纵坐标与摆放状态组成的三元组,为了方便表示,只取长方体左上方的位置作为横、纵坐标状态,BFSBFSBFS 求解即可。 #include <algorithm> #include <cstdio> #include <cstring> #include <queue> using namespace std; #define maxn 505 struct node { i

neweryyy的博客 194

POJ - 3322 Bloxorz I(bfs+状态设计)

题目链接:点击查看 题目大意:模拟Bloxorz小游戏找出最优解,简单说一下规则,给出一个n*m的矩阵,其中,"#"代表墙,"X"代表起点,"O"代表终点,"E"代表脆弱道路,即承受不住立着的方块,"."代表普通道路 题目分析:因为方块总共有三种状态:立着(占1格)、竖着(占2格)、横着(占2格),我们可以将占两个的两个状态压缩到一格中,竖着的(上下分布)我们规定有效方格在上面,横着的(左右分...

Falcon的博客 688

POJ 3322 Bloxorz I(进阶指南,广搜)

算法竞赛进阶指南,112页, 广搜,坐标变换 题目意思: 4433 小游戏上面的 推木头游戏,http://www.4399.com/flash/13071.htm#search3 本题要点: 1、长方体的状态表示, (x, y, lie) 其中 x, y 表示坐标,lie 表示长方体怎样摆放 lie == 0, 长方体立起来,与地面接触只有 的一面是 1 * 1 的正方形 lie == 1, 长方体横向躺着,左半部分在 位置 (x, y) lie == 2, 长方体竖向向躺着,左半部分在 位置 (x, y

qq_38232157的博客 269

POJ 3322 Bloxorz I 三维BFS

本来只是打算为今晚的CF热热手的,结果选了道坑爹的BFS。写了350多行的代码还WA了一次。。。。。 对于普通的方格有五种情况,如下图所示,对于方格5来说,与1,与2,与3,与4组成的矩形为四种不同的情况,还有一种为竖直站立的情况。 对于Easily Broken Grid只存在前四种情况。 很显然第三维标记这几种情况即可。思路还算简单,代码写的比较麻烦了。。。。 话说今年大年三十哇,

自在飞花 2008

POJ3322 Bloxorz I BFS

题目链接 http://poj.org/problem?id=3322 分析 每次操作,地图不会改变,变化的坐标及放置方式可以设为状态,进行BFS。 预处理出各种放置方式下,向各个方向移动后状态的变化情况。 AC代码 #include <cstdio> #include <cstring> #include <queue> using namespace st...

Kevin的博客 198

POJ-3322 Bloxorz I

POJ-3322 Bloxorz 关于bfs不错的题目

ybC202444的博客 351
上一篇: (poj 2823 Sliding Window)<单调队列裸题>
下一篇: (poj 2449 Remmarguts' Date)<A*-K短路模板>
SDFZspli
博客等级 码龄10年 17粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值