题目大意:略

直接爆搜会T,我们优化一下,统计出当前棋盘和目标棋盘不同的位置的数量k,那么当前棋盘变成目标棋盘最少的移动次数是k-1

每次选择一个最大深度ma,那么如果当前走了dep步,显然必须保证dep+k-1<=ma,否则当前棋盘就是永远无法在规定步数ma内到达目标棋盘的

其实这个不算很A*吧...应该算剪枝

移动方向的数量打错了WA了好久...另外LOJ上有这道题的数据

 #include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define NN 65538
#define MM 100
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define inf 0x3f3f3f3f
#define idx(X,Y) ((X)*5+(Y))
using namespace std; int T;
const int Ed=;
const int maxn=;
int mp[][],bin[],cnt[NN];
int xx[]={-,-,,,,,-,-};
int yy[]={,,,,-,-,-,-};
int check(int x,int y)
{if(x<||y<||x>||y>)return ;return ;}
int dfs(int dep,int s,int p,int ma,int fa,int fp)
{
if(s==Ed&&p==) return ;
if(dep>=ma) return ;
int x=p/,y=p%;
int tx,ty,t,tp,sum,h,ans;
sum=Ed^s;
h=cnt[sum&maxn]+cnt[sum>>];
if((p!=)&&(!(sum&(<<p)))&&(!(Ed&(<<p)))) h++;
if((p!=)&&(!(sum&(<<)))&&(!(s&(<<)))) h++;
if(dep+h->ma) return ;
for(int k=;k<;k++)
{
tx=x+xx[k],ty=y+yy[k];
if(!check(tx,ty)) continue;
if(s&(bin[idx(tx,ty)]))
t=(s^bin[idx(tx,ty)])|bin[idx(x,y)];
else t=s;
tp=idx(tx,ty);
if(t==fa&&tp==fp) continue;
ans=dfs(dep+,t,tp,ma,s,p);
if(ans) return ;
}return ;
} int main()
{
//freopen("t2.in","r",stdin);
scanf("%d",&T);
bin[]=;
for(int i=;i<=;i++)
bin[i]=bin[i-]<<;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(i&(<<j)) cnt[i]++;
while(T--)
{
char str[];int s=,p;
for(int i=;i<;i++)
{
scanf("%s",str);
for(int j=;j<;j++){
if(str[j]=='*'){
p=idx(i,j);
}else if(str[j]==''){
s|=(bin[idx(i,j)]);
}
}
}
int fl=;
for(int k=;k<=;k++){
int ans=dfs(,s,p,k,-,);
if(ans){
printf("%d\n",k);
fl=;break;}
}
if(!fl) printf("-1\n");
}
return ;
}

BZOJ 1085 / LOJ 2151 [SCOI2005]骑士精神 (剪枝/A*迭代搜索)的更多相关文章

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

    Bzoj 1085: [SCOI2005]骑士精神 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 dfs + 剪枝. 剪枝方法: ...

  2. BZOJ(7) 1085: [SCOI2005]骑士精神

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3233  Solved: 1911[Submit][Stat ...

  3. BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )

    一开始写了个 BFS 然后就 T 了... 这道题是迭代加深搜索 + A* -------------------------------------------------------------- ...

  4. BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2838  Solved: 1663 [Submit][St ...

  5. BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1800  Solved: 984[Submit][Statu ...

  6. 【bzoj1085】[SCOI2005]骑士精神

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1757  Solved: 961[Submit][Statu ...

  7. BZOJ_1085_[SCOI2005]骑士精神_IDDFS

    BZOJ_1085_[SCOI2005]骑士精神_DFS Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可 ...

  8. 【洛谷】2324:[SCOI2005]骑士精神【IDA*】

    P2324 [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,* ...

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

    BZOJ1085 SCOI2005 骑士精神 Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐 ...

随机推荐

  1. JS对以对象组成的数组去重

    这是从https://segmentfault.com/q/1010000006954351参考的,达到了我要去重的功能!!! var hash = {};//arr是要去重的对象数组 arr = a ...

  2. Lua 中的 RSA 加解密实现

    记得之前,部门某款游戏陆陆续续收到一些玩家反馈,抱怨在登录游戏时会等待很久.初步排查后基本断定可能是此游戏的登录服务器程序某块代码有问题,于是即安排了服务器同事作排查分析但一直无果. 之后我时间有了空 ...

  3. 一些css兼容问题

    由于各浏览器的不同,会存在一些兼容问题,特别是兼容IE6/7/8 下面简单介绍了一些解决方法,更多问题可以访问 W3help.org来查看. 可以通过js获取浏览器版本 document.body.i ...

  4. UGUI图集管理

    using UnityEngine; using System.Collections; using System.Collections.Generic; //纹理图集加载管理 public cla ...

  5. struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)

    struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...

  6. Jquery学习总结(4)——高效Web开发的10个jQuery代码片段

    在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...

  7. BestCoder Round #52 (div.2) HDU 5418 Victor and World (DP+状态压缩)

    [题目链接]:pid=5418">click here~~ [题目大意]: 问题描写叙述 经过多年的努力,Victor最终考到了飞行驾照. 为了庆祝这件事,他决定给自己买一架飞机然后环 ...

  8. kqueue演示样例

    网络server通常都使用epoll进行异步IO处理,而开发人员通常使用mac,为了方便开发.我把自己的handy库移植到了mac平台上. 移植过程中,网上竟然没有搜到kqueue的使用样例.让我吃惊 ...

  9. HBase基本数据操作具体解释

    引言 本文档參考最新(截止2014年7月16日)的官方Ref Guide.Developer API编写. 全部代码均基于"hbase 0.96.2-hadoop2"版本号编写.均 ...

  10. BZOJ 1264: [AHOI2006]基因匹配Match 树状数组+DP

    1264: [AHOI2006]基因匹配Match Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...