(bzoj 1085 [SCOI2005]骑士精神)<A*>

Mixly米思齐——超声波测距控制LED灯 为了更加地贴近中小学信息技术的课程,我们用米思齐做了一个实验——根据距离的远近开启警报灯(利用超声波测出距离)。 实验硬件准备 arduino uno R3 、USB 数据线、YFROBOT UNO I/O扩展板、YFROBOT超声波传感器模块、模块3P连接线x1、LED灯x1 硬件连接图如下: 在arduino uno R3 上再接一个LED灯,实物图如下: 在本次实验中,LE... 阅读详情

传送门


Solution

  • 既然图中只有一个空格,那么任何一个骑士如果移动,都只会移动到空格中
  • 每一次移动最多使一个点达到目标状态(其实并不准确)
  • 因此推出:保证目标位置的骑士(包括空格)的数量=最少需要移动的步数
  • dfs之前可以先算一下最少需要移动的步数,如果这个步数+已经移动的步数>期望的步数,说明这种移动的策略不可行(A*的预估函数)

Code

// by spli
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;

const int g[6][6]={
0,0,0,0,0,0,
0,1,1,1,1,1,
0,-1,1,1,1,1,
0,-1,-1,2,1,1,
0,-1,-1,-1,-1,1,
0,-1,-1,-1,-1,-1
};
int T;
int xa,ya;
int mx[9]={0,1,1,2,2,-1,-1,-2,-2};
int my[9]={0,2,-2,1,-1,2,-2,1,-1};
bool ans;

bool ck(int a[6][6]){
    for(int i=1;i<=5;++i)
        for(int j=1;j<=5;++j)
            if(a[i][j]!=g[i][j]) return 0;
    return 1;
}

bool cnt(int t,int tim,int a[6][6]){
    int b=0;
    for(int i=1;i<=5;++i)
        for(int j=1;j<=5;++j){
            if(a[i][j]!=g[i][j]) b++;
            if(b+t>tim) return 0;
        }
    return 1;
}

void dfs(int x,int y,int t,int tim,int a[6][6]){
    if(t==tim){
        if(ck(a)) ans=1;
        return;
    }
    if(ans) return;
    int kx,ky;
    for(int i=1;i<=8;++i){
        kx=x+mx[i];
        ky=y+my[i];
        if(kx<1||kx>5||ky<1||ky>5) continue;
        swap(a[x][y],a[kx][ky]);
        if(cnt(t,tim,a)) dfs(kx,ky,t+1,tim,a);
        swap(a[x][y],a[kx][ky]);
    }
}

int main(){
    scanf("%d",&T);
    while(T--){
        char s[10];
        int a[6][6];
        for(int i=1;i<=5;++i){
            scanf("%s",s+1);
            for(int j=1;j<=5;++j){
                if(s[j]=='*'){
                    xa=i;ya=j;a[i][j]=2;
                }
                if(s[j]=='0') a[i][j]=-1;
                if(s[j]=='1') a[i][j]=1;
            }
        }
        ans=0;
        for(int i=0;i<=15;++i){
            dfs(xa,ya,0,i,a);
            if(ans){
                printf("%d\n",i);
                break;
            }
        }
        if(!ans) printf("-1\n");
    }
    return 0;
}
LangGraph实战:用Python异步构建智能客服多轮对话系统(附完整代码) 本文详细介绍了如何使用LangGraph框架和Python异步编程构建一个高性能的智能客服多轮对话系统。通过将对话流程建模为有向图,结合thread_id实现多用户对话隔离,并利用异步节点提升系统并发处理能力,有效解决了传统客服系统上下文遗忘与高并发瓶颈问题。文章提供了从环境搭建、状态管理、异步优化到复杂业务逻辑与部署的完整实战代码。 阅读详情

相关推荐

STM32F429+LAN8720实战:5分钟搞定LWIP裸机网络通讯(附完整代码)

本文详细介绍了如何在STM32F429微控制器上,结合LAN8720 PHY芯片,在裸机环境下快速部署和配置LWIP协议栈以实现网络通讯。内容涵盖硬件RMII接口连接、STM32CubeMX关键配置、代码移植与定制,以及常见问题排查方法,帮助工程师在资源受限的嵌入式系统中高效实现稳定的以太网功能。

2y3u4i5o6p的博客 963

骑士精神

描述 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务。 输入 第一行有一个正整数T(T<=10),表示一共有N组数据。接下来有

blue_kid的博客 551

python文件转为可执行文件(.exe)的详细步骤

本文详细介绍了如何从零开始把python文件打包成为可执行文件(.exe)。

m0_67093160的博客 3万+

骑士精神 (HYSBZ - 1085 ,简单 A* 暴搜)

一.题目链接: HYSBZ-1085 二.题目大意: 直接看题目,懒得解释. 三.分析: 其实就是一个简单 A* 搜索 的板子 为了方便,分析就写注释里了. 四.代码实现: #include <set> #include <map> #include <ctime> #include <queue> #include <cma...

The___Flash的博客 325

Abaqus仿真进阶:如何准确计算气动软体机器人的抓取力(Blocking Force分析)

本文详细介绍了使用Abaqus进行气动软体机器人抓取力(Blocking Force)分析的进阶技巧。从材料模型验证、刚性目标物选择到接触对建立和充气加载优化,提供了一套完整的有限元仿真解决方案,帮助工程师准确预测软体执行器的抓取性能。

weixin_42528902的博客 401

Linux Component概述和高通component的使用

为了让subsystem按照一定顺序初始化设备才提出来的。subsystem中由很多设备模块,内核加载这些模块的时间不确定。子系统内有些模块是需要依赖其它模块先初始化才能进行自己初始化工作(例如v4l2 subdev和v4l2 video device),这时就要用到component框架。例如v4l2 subdev和v4l2 video device中,谁依赖谁先创建?

lz_1990的专栏 1610

[bzoj1085][SCOI2005]骑士精神【暴力】

【题目链接】   http://www.lydsy.com/JudgeOnline/problem.php?id=1085 【题解】   dfs+剪枝即可。   剪枝的方法是,若当前状态与目标状态有kkk个不同。那么至少还要使用k−1k−1k-1步。若当前步数+k−1≥当前步数+k−1≥当前步数+k-1\geq ans则直接退出。    /* -------------- ...

D_Vanisher的博客 351

OpenRadar Matlab版:毫米波雷达信号处理全流程开源库详解

毫米波雷达数据解析与信号处理是感知领域的基础能力。本文介绍毫米波雷达从ADC原始采样到距离-多普勒(Range-Doppler)热图、CFAR检测、DOA估计直至点云与生命体征参数提取的完整处理链路,并深入讲解OpenRadar(Matlab版)开源库的内核设计、核心API与实测经验。从原理上看,距离FFT与多普勒FFT构成RD谱,CFAR自适应阈值实现目标检测,相位解缠与滤波用于呼吸心跳提取。技术价值在于将繁琐的雷达数据读取、矩阵变换和算法流程标准化,免去重复造轮子。可应用于人员存在感知、生命体征监护、4

weixin_33806859的博客 322

BZOJ1085&&洛谷P2324骑士精神

中文题意不再赘述这是一道非常好的入门水题博主用的IDA*,因为题目中给了最大搜索深度,讲一讲做法先预处理一个end数组,代表地图最后要形成的样子,白旗为1,黑棋为0,空格为2然后模拟每个棋子向八个方向跳能不能跳到空格,这些都很容易想,但也容易超时所以我们要想剪枝我们不难发现,一次只能跳一个棋子,并且只会影响该棋子与空格的位置,那么我们在开始搜索前判断一下当前图中有多少棋子没有归位,那么我们就最少需...

AcerMoOi之路 490

别再只会用串口助手了!手把手教你用手机App调试HC-05蓝牙模块(STM32F103实战)

本文详细介绍了如何利用手机App调试HC-05蓝牙模块与STM32F103的无线连接,突破传统串口助手的限制。通过实战指南,开发者可以掌握移动性测试、实时监控和快速验证等高效调试技巧,优化蓝牙透传的稳定性和性能。

weixin_33670786的博客 428

实战篇(七):使用Processing和PixelFlow库创建交互式流体太极动画

类:用于配置流体运动的参数,比如圆的位置、半径、运动的角度和速度以及颜色等。类:实现了接口,用于更新流体物理仿真的状态,同时整合声音输入作为流体动态变化的一部分。my_update方法:是流体物理仿真更新的核心,它计算流体粒子的速度和位置,并且将这些数据传递给流体库来模拟流动。现在,让我们进一步分析并解释每个部分的作用以及如何操作。float x;// 圆心位置xfloat y;// 圆心位置y// 半径// 是否是顺时针// 圆周运动,弧上的点位置,以及上一帧的点位置// 角度。

帅小柏的博客 1635

1085: [SCOI2005]骑士精神

1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 534  Solved: 280 [Submit][Status] Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相

SKY的C 2594

17、扩展景深成像的瞳孔函数工程技术解析

本文详细解析了扩展景深成像的关键技术,包括基于焦距堆栈的数字处理方法、立方相位掩模的光学设计、对数非球面透镜的应用以及旋转点扩散函数的深度编码功能。通过实验验证和实际应用分析,展示了这些技术在显微镜成像、工业检测和医疗影像中的广泛用途及优势。同时探讨了未来发展方向,如智能算法优化、新型光学材料和多模态成像技术,为相关领域的技术创新提供了参考。

y2z3a4b5c的博客 168

【BZOJ1085】[SCOI2005]骑士精神 双向BFS

【BZOJ1085】[SCOI2005]骑士精神 Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少...

aodanchui1057的博客 113

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

BZOJ_1085_[SCOI2005]骑士精神_IDDFS

BZOJ_1085_[SCOI2005]骑士精神_DFS Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神...

162

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【bzoj1085】【SCOI2005】【骑士精神】【IDA*】

Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务。 Input 第一行有一个正整数T

sunshinezff的专栏 1958

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Bzoj 1085: [SCOI2005]骑士精神 (dfs)

Bzoj 1085: [SCOI2005]骑士精神 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 dfs + 剪枝. 剪枝方法: 1.每次交换只能改变一个位置.若发现之间相差的步数加上以前走的步数大于15的话,直接舍弃这一状态. 2.初始时,\(ans\)设为\(16\) 有了上面两个剪枝就A了. 照这节奏,SCOI...

dieloupi0136的博客 155

BZOJ 1085: [SCOI2005]骑士精神

Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务。 Input 第一行有一个正整

jjs98 1872

BZOJ 1085: [SCOI2005]骑士精神【A*】

1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的...

aiweiluan5095的博客 137

【BZOJ 1085】[SCOI 2005] 骑士精神(IDA*搜索,双向BFS)

目录题目DescriptionInputOutputSample InputSample Output思路1、双向bfs2、IDA*搜索IDDFSA*两种算法合并代码双向bfsIDA*搜索 题目 Description 在一个 5×55 \times 55×5 的棋盘上有 121212 个白色的骑士和 121212 个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和...

t14 的博客 844

BZOJ1085. [SCOI2005]骑士精神(IDA*算法)

Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步 数完成任务。 Input   第一行有一个正整数T(T&l...

tomjobs的博客 555

【IDA* 模板】【SCOI2005】洛谷p2324 BZOJ1085 骑士精神

洛谷P2324 bzoj 1085 弱弱地说一句,这里复制使用的是bzoj的题干,因为洛谷上是个图片QAQ (逃 Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能经过...

qq_43398760的博客 286

bzoj 1085[SCOI2005]骑士精神 - IDA*

1085: [SCOI2005]骑士精神 Time Limit:10 SecMemory Limit:162 MB Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初...

152

BZOJ1085 SCOI2005 骑士精神【IDA* 启发式迭代加深】

BZOJ1085 SCOI2005 骑士精神 Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成...

Dream_maker的博客 389

BZOJ【1085】骑士精神

1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋

LJH_KOQI的博客 621

【bzoj1085】[SCOI2005]骑士精神

1085: [SCOI2005]骑士精神 Time Limit:10 SecMemory Limit:162 MBSubmit:1757Solved:961[Submit][Status][Discuss] Description   在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和...

anzhi7214的博客 84
上一篇: (poj 2449 Remmarguts' Date)<A*-K短路模板>
下一篇: <模板>计算SG函数-(hdu 1848 Fibonacci again and again)
SDFZspli
博客等级 码龄10年 17粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值