(poj 3322 Bloxorz I)<爆搜?>

新硬盘到手,在统信UOS或麒麟系统上怎么认?保姆级教程从识别到挂载一步到位 本文提供新硬盘在统信UOS或麒麟KYLINOS系统上的完整配置指南,从识别物理硬盘到挂载全流程详解。通过终端命令如df和lsblk,帮助用户完成硬盘识别、分区、文件系统创建及挂载配置,确保新硬盘顺利投入使用。 阅读详情

传送门


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;
}

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

Ollama DNS 重新绑定攻击 (CVE-2024-28224) 一旦 DNS 重新绑定攻击成功,攻击者就可以对这些 API 进行排序,以读取 Ollama 运行的进程可访问的任意文件数据,并将这些数据泄露到攻击者控制的系统中。完成对“创建模型” API 请求的调用后,Ollama 将收集组成新创建的用户模型的许多工件,包括大型语言模型数据、许可证数据等,以及我们要提取的文件,所有这些都可以通过其 SHA256 内容进行寻址。这是我们要窃取的文件,在我们的示例中,是可通过运行 Ollama 的主机上的路径名访问的现有文本文件。值得注意的是,该模型配置为通过参数中的。 阅读详情

相关推荐

CKAD-CN 考试知识点分享(2) CronJob

成功创建 CronJobppi,每 5 分钟执行一次计算任务;配置了和;设置,超时自动终止;确保 Pod 不重启;手动创建ppi-testJob 验证功能正常;所有任务要求均已满足。

轻的博客 331

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

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4595

POJ3322(bfs+状态限制)

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

ssw的博客 344

告别手动拍照!用Python+JAKA机械臂+D455相机实现全自动手眼标定(附完整代码)

本文详细介绍了如何利用Python脚本实现JAKA机械臂与Intel RealSense D455相机的全自动手眼标定流程,提供从硬件配置到代码实现的完整解决方案。通过自动化标定,显著提升工业自动化中的精度和效率,适用于机器人视觉领域的二次开发需求。

weixin_30555125的博客 521

Python CalmAn(Calcium Imaging Analysis)神经生物学工具包安装及环境配置过程

CalmAn是一个用于大规模钙成像数据分析和行为分析的Python工具箱。CaImAn实施了大规模钙成像数据分析管道中所需的一套基本方法。针对多天的运动校正、源提取、尖峰反褶积和分量配准,实现了快速且可扩展的算法。它适用于双光子和单光子荧光显微镜数据,可以在批处理和在线模式下运行;CaImAn还包含一些分析摄像机行为的例程。

Fine的优快云博客 3558

POJ3322滚箱子游戏(不错)

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

天使也掉毛 1780

MySQL 分库分表及其平滑扩容方案

MyCAT不仅仅可以用作读写分离,以及分表分库、容灾管理,而且可以用于多租户应用开发、云平台基础设施,让你的架构具备很强的适应性和灵活性。分表对于一张多行(记录)多列(字段)的二维数据表,又分两种情形(1)垂直分表竖向切分,不同分表存储不同的字段,可以把不常用或者大容量、或者不同业务的字段拆分出去;扩容前每个节点的数据,有一半要迁移至一个新增节点中,对应关系比较简单。此时,四个节点的数据都已完整,只是有冗余(多存了和自己配对的节点的那部分数据),择机清除即可(过后随时进行,不影响业务)。...

m0_71777195的博客 1929

POJ3322解题报告

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

博客 394

HP iLO4报错自救指南:Embedded Flash/SD-CARD故障的3种修复方案(附详细截图)

本文详细解析了HP iLO4出现'Embedded Flash/SD-CARD'故障时的3种修复方案,包括快速恢复、固件级修复和硬件级解决方案。通过Diagnostics诊断和Self-Test报告,帮助运维人员高效解决问题,并提供预防性维护建议,确保服务器远程管理功能的稳定性。

weixin_42522953的博客 511

YOLOv11改进缝合注意力 | 深度优化的BiFormer模型-结合BiLevel Routing Attention与深度可分离卷积的创新应用(附代码)

YOLO(You Only Look Once)系列目标检测算法一直以来都是计算机视觉领域的热门选择。随着YOLOv11的发布,它在许多实际应用场景中取得了显著的性能提升。然而,面对日益复杂的目标检测任务,单纯依赖卷积神经网络(CNN)在某些情况下已经显得力不从心,特别是在处理小尺度、密集目标以及遮挡目标时,卷积操作的局部性限制了模型的表达能力。

一键难忘的博客 716

POJ3322-经典的游戏搜索问题

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

算法,时空数据挖掘 1532

ZYNQ PS裸机开发RS485

RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。

baidu_34971492的博客 831

POJ 3322 Bloxorz I

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

weixin_43908980的博客 518

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Bloxorz I POJ - 3322

Bloxorz I POJ - 3322

weixin_29216119的博客 1178

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Bloxorz POJ3322

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

没有自旋的π介子 229

计算机控制技术及应用

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

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、付费专栏及课程。

余额充值