【BZOJ】T1085 骑士精神

C++ bitset总结 数据结构bitset 术语:某1位置位是置1,某一位复位是某一位清零。 文章目录数据结构bitset一、3种初始化方式二、位访问三、位操作四、 位集操作总结实战练习 一、3种初始化方式 bitset<32> tmp; //默认构造函数,默认全0。 bitset<32> tmp(-1); //从整形数构造 bitset<32> tmp("101"); //从包含1和0的字符串构造 二、位访问 bitset<32> tmp(256) 阅读详情

挺裸的搜索题。
直接爆搜状态数太多会时间超限,因为我们搜索了太多无用的状态,例如此刻有16个棋子不在它应该在的位置上。
因为每次操作最多将一个棋子归位,所以我们完全可以剪掉那些 “错位棋子数” 超过 “剩余步数” 的状态。
例如此刻有13个棋子不在它应该在的位置上,而我已经走完4步,那么在剩下的11步内我不可能将这错位的13颗棋子都归为原位。它没有继续讨论的价值,而这就是耗费计算时间的冗余状态了。


于是,我们引入一个估价函数:judge();它的函数值是当前状态与最终期望状态之间“错位”的棋子个数,其意义是从当前状态到达期望状态至少需要的步数。对于已经走过的 step 步,若 judge()+step>15 则可以剪枝直接回溯。
最后我们要注意一个点:操作的最后一步会同时将两个棋子归位,这也是可以Hack的一个点。


题目链接:
洛谷 P2324 [SCOI2005]骑士精神
BZOJ 1085: [SCOI2005]骑士精神

#include<bits/stdc++.h>
#define FAIR(x) (x<=5&&x>=1)
#define INF 233
using namespace std;
int a[7][7];
int ed[7][7]={
    {},
    {0,1,1,1,1,1},
    {0,0,1,1,1,1},
    {0,0,0,2,1,1},
    {0,0,0,0,0,1},
    {0,0,0,0,0,0}
};
int tx[8]={1,1,-1,-1,2,2,-2,-2};
int ty[8]={2,-2,2,-2,1,-1,1,-1};
int ans=INF;
int judge()
{
    int cnt=0;
    for(int i=1;i<=5;i++)
    for(int j=1;j<=5;j++)
    {
        if(a[i][j]!=ed[i][j])cnt++;
    }
    return cnt==2?1:cnt;
}
void dfs(int step,int lx,int ly)
{
    int res=judge();
    if(!res){
        ans=min(ans,step);
        return;
    }
    if(step+res>15)
        return;
    int x,y;bool flag=false;
    for(x=1;x<=5;x++){
    for(y=1;y<=5;y++)
        if(a[x][y]==2){
            flag=true;
            break;
        }
        if(flag)break;
    }
    for(int i=0;i<8;i++)
    {
        int xt=x+tx[i],yt=y+ty[i];
        if(FAIR(xt)&&FAIR(yt)&&(xt!=lx||yt!=ly)){
            swap(a[xt][yt],a[x][y]);
            dfs(step+1,x,y);
            swap(a[xt][yt],a[x][y]);
        }
    }
}
int main()
{
    int T;scanf("%d\n",&T);
    while(T--)
    {
        ans=INF;
        for(int i=1;i<=5;i++)
        for(int j=1;j<=5;j++)
        {
            char c=getchar();
            while(!(c=='0'||c=='1'||c=='*'))c=getchar();
            a[i][j]=c=='*'?2:c-'0';
        }
        dfs(0,0,0);
        if(ans==INF)printf("-1\n");
        else printf("%d\n",ans);
    }
}
基于FPGA低频方波测量-频率与占空比 阅读详情

相关推荐

Silvaco TCAD | GaN HEMT器件仿真与高频功率应用实战

本文详细介绍了使用Silvaco TCAD进行GaN HEMT器件仿真的全流程,涵盖器件结构设计、极化效应建模、高频特性分析及功率损耗优化。通过实战案例展示了GaN HEMT在电动汽车电驱和快充模块等高频功率应用中的性能优势与效率提升策略,为工程师提供可靠的仿真方法与设计验证手段。

desk3的博客 183

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

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

XSamsara的博客 AFO 263

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 1651

[SCOI2005]骑士精神----A*+BFS

A*算法

weixin_68203080的博客 1024

人工智能学习之机器人路径规划优化

A* AStar 人工智能 机器人路径规划优化

RongLin02的博客 7073

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 428

1754. 骑士精神

描述 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务,若果步数大于15,返回-1。 目标棋盘是 “11111” “01111” “00*11” “00001” “00000” 解法: 问题等价于从最终状态经过15步是否能达到起始状态。.

其实我是一个艺术家 3180

Python爬虫实战:全方位解析前程无忧(51job)职位详情爬取及反爬破解

平台规模:覆盖全国各行业、数百万条岗位信息。数据特点:职位描述详细,职位标签丰富。数据价值:支持招聘趋势分析、职业发展研究、薪资行情调研。推荐Python 3.10+,支持最新async特性与库兼容。

2201_76125261的博客 1486

[SCOI2005]骑士精神(C++,启发式搜索)

启发式搜索 = 估价函数 + 暴力搜索

m0_74036684的博客 945

NEU-DET 冷轧钢缺陷检测:基于 YOLOv8 的目标检测与可视化 UI 实现

冷轧钢的生产过程中,由于设备故障、工艺问题或者人为因素,钢板表面可能会出现多种缺陷,如划痕、裂纹、孔洞等,这些缺陷会严重影响钢材的质量。它比之前的版本(如 YOLOv5、YOLOv4)在速度和精度上都有显著提升,并且对硬件要求较低,适合进行工业界面和嵌入式系统的应用。这些版本相较于更大型的模型(如 YOLOv8x)具有更快的推理速度和较低的资源占用,适合工业生产线中的实时应用。通过将训练好的模型部署到工业生产线摄像头中,我们可以实现实时的缺陷检测,极大地提升生产效率和产品质量。

YOLO 736

【WRF数据准备】海温(SST)数据替换

【WRF数据准备】海温(SST)数据替换

WW、forever的博客 1118

BZOJ 1085: [SCOI2005]骑士精神 IDA* 估价函数

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

I good vegetable a! 619

基于扣子3.0复刻MIT“AI股神团队版”:实时股票数据API接入与策略选股复盘系统

基于扣子3.0的AI量化投资系统摘要 本文提出了一种基于扣子(Coze)3.0平台的AI量化投资解决方案,整合实时股票数据与策略选股功能。系统采用三层架构: 数据层:通过AKShare等开源工具获取A股实时行情和历史K线数据,支持批量数据抓取和清洗 策略层:内置多因子选股模型和技术指标分析模块,实现自动化标的筛选 应用层:利用扣子3.0的插件和工作流功能,构建从数据采集到投资建议的完整流程 系统特点包括:完全开源的数据接入方案、Python实现的策略计算模块、以及扣子平台提供的可视化编排能力~~~~~~~~

huanghm88的专栏 265

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

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

aodanchui1057的博客 113

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

BZOJ_1085_[SCOI2005]骑士精神_IDDFS

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

162

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

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

bzoj 1085骑士精神

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

weixin_34037977的博客 137

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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 骑士精神

迭代加深搜索

scarlyw的博客 519

BZOJ 1085: [SCOI2005]骑士精神

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

jjs98 1872

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

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

Dream_maker的博客 389

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

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

sunshinezff的专栏 1958

【bzoj1085】[SCOI2005]骑士精神

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

anzhi7214的博客 84

[BZOJ1085【骑士精神】]

BZOJ1085【骑士精神】这道题很明显是一道BFS或者是A*+迭代加深。 BFS也可可以套个A*估值,再用优先队列去维护。 不多说,直接现代码: BFS+A*#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<set> #include<map> #include<queue>

chk 355

bzoj1085 [SCOI2005]骑士精神 ( 迭代加深搜索 + A*启发式搜索 )

bzoj1085 [SCOI2005]骑士精神 原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1085题意: 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。 给定一个初始的棋

Bfk的博客 666

BZOJ1085: [SCOI2005]骑士精神

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

wxh010910 404

BZOJ 1085: [SCOI2005]骑士精神

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

窦小雨的小点子 397
上一篇: 【BZOJ】水水知识点
下一篇: 【BZOJ】T3041 水叮当的舞步
coldhac
博客等级 码龄10年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值