P2324 [SCOI2005]骑士精神
题目描述

输入输出格式
输入格式:
第一行有一个正整数T(T<=10),表示一共有N组数据。接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位。两组数据之间没有空行。
输出格式:
对于每组数据都输出一行。如果能在15步以内(包括15步)到达目标状态,则输出步数,否则输出-1。
输入输出样例
2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
7
-1
Solution:
又是变量名打错,调了有一会儿~滑稽~!
本题直接切入点是步数不超过$15$,很自然想到迭代加深搜索。
那么直接限制深度搜,一个可行性剪枝就是统计一下当前没有被还原的棋子个数,若大于步数则直接剪掉。
(瞎几把乱搞一通就好了,关键注意判重,不能回到上一个点,否则卡死循环。)
代码:
#include<bits/stdc++.h>
#define il inline
#define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
int T,ans,stx,sty,w[][],ed[][]={
,,,,,,
,,,,,,
,,,,,,
,,,-,,,
,,,,,,
,,,,,
};
char s;
int dx[]={,,-,-,,,-,-},dy[]={,-,,-,,-,,-};
bool f;
il void dfs(int x,int y,int t,int lstx,int lsty){
if(!t)return;
int tot=;
For(i,,) For(j,,)
if(w[i][j]!=ed[i][j])tot++;
if(!tot){f=;return;}
if((tot>>)>t)return;
For(i,,){
int xx=dx[i]+x,yy=dy[i]+y;
if(xx>&&xx<&&yy>&&yy<&&(xx!=lstx|yy!=lsty)){
swap(w[xx][yy],w[x][y]),dfs(xx,yy,t-,x,y),swap(w[xx][yy],w[x][y]);
}
}
}
il bool solve(){
f=;
For(t,,){
dfs(stx,sty,t,,);
if(f){ans=t;return ;}
}
return ;
}
int main(){
ios::sync_with_stdio();
cin>>T;
while(T--){
For(i,,) For(j,,){
cin>>s;
if(s=='')w[i][j]=;
if(s=='*')w[i][j]=-,stx=i,sty=j;
if(s=='')w[i][j]=;
}
if(solve())cout<<ans-<<'\n';
else cout<<-<<'\n';
}
return ;
}
P2324 [SCOI2005]骑士精神的更多相关文章
- [luogu P2324] [SCOI2005]骑士精神
[luogu P2324] [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1 ...
- 洛谷 P2324 [SCOI2005]骑士精神 解题报告
P2324 [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,* ...
- P2324 [SCOI2005]骑士精神(A*)
P2324 [SCOI2005]骑士精神 A*与爆搜的不同就是它有一个估价函数$h(x)$ 这个估价函数一般设为从当前状态到终点状态的估计最短步数,这样可以有效剪枝 但估计值必须严格小于等于实际剩余步 ...
- 【题解】P2324 [SCOI2005]骑士精神
·有关IDA* 是带有估值函数的迭代加深搜索,表现出出色的效率. 估值函数可以简单的定义为「已经到位的骑士的个数」. 然后就是普通的迭代加深了. 算法酷炫不一定赢,搜索好才是成功. ——Loli Co ...
- 【luogu P2324 [SCOI2005]骑士精神】 题解
题目链接:https://www.luogu.org/problemnew/show/P2324 不懂怎么剪枝,所以说,,我需要氧气.. 第一道A* // luogu-judger-enable-o2 ...
- Luogo P2324 [SCOI2005]骑士精神
所有想练习A*的人都先来敲一下这道题吧. 数据范围即便只有5*5,但朴素的爆搜还是会超时. 因此考虑剪枝. 对于这道题,肯定只要进行最优化剪枝,判断现在走的步数+剩下最少要走的步数,如果大于ans或者 ...
- 洛谷 P2324 [SCOI2005]骑士精神
题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位.两组数据之间没有空行. 输出格式 ...
- 洛谷P2324 [SCOI2005] 骑士精神
题目 方法很多,最经典的是用搜索的算法,也就是\(IDA*\)算法搜索. \(IDA*\)算法是每次规定一个搜索深度,并在搜索的时候限制该搜索深度,从而达到把深搜的优点和广搜的优点结合起来优化时间的一 ...
- Luogu P2324 [SCOI2005]骑士精神 搜索
刚开始写了个没迭代的...结果过了$qwq$ 然后迭个代..更快了.. #include<cstdio> #include<iostream> #define R regist ...
随机推荐
- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-9enuqi/MySQL-python/
hu@hu-VirtualBox:/home/newdisk/telnet-scanner$ sudo pip install MySQL-python[sudo] hu 的密码: The direc ...
- Kettle报表自动化
来自我们牛逼哄哄的东哥的笔记 1. 2. 3. 选择数据库链接 贴报表SQL 4. 文件名:选择路径,excel文件由kettle自动创建,自己只需输入创建文件的名称. 拓展名:后缀写上 5. 此 ...
- Mysql url参数浅析
驱动包用的是mysql-connector-java-8.0.11.jar 新版的驱动类改成了com.mysql.cj.jdbc.Driver //北京时间东八区 serverTimezone=GMT ...
- Angular项目下载启动
Angular cmdb-front 新建项目流程 打开idea New>Project 2,打开项目仓库,拷贝项目地址 拷贝项目路径,填写项目名 点击clone,然后一路Next 项目代码已 ...
- Objection, 一个轻量级的Objective-C依赖注入框架
简介 项目主页:https://github.com/atomicobject/objection 实例下载: https://github.com/ios122/ios122 Objection 是 ...
- 自定义动画函数JQuery实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mongdb安装配置
一.先登录Mongodb官网https://www.mongodb.com/download-center#community 下载 安装包.32.64位的都行. 或者查看我的百度云(使用win7 ...
- Educational Codeforces Round 43 E. Well played!(贪心)
E. Well played! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 笔记-scrapy-setting
笔记-scrapy-setting 1. 简介 Scrapy设置允许您自定义所有Scrapy组件的行为,包括核心,扩展,管道和蜘蛛本身. 可以使用不同的机制来填充设置,每种机制都有不同的优先级 ...
- 理解JAVA与C的运行机制
1.java的运行机制 java的编译过程,将java的源程序(扩展名为.java的文件),由java编译程序将java的字节码文件(.class文件)在jvm上运行,机器码有cpu运行, jvm编译 ...