博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Gym 100231F Solitaire 折半搜索
阅读量:6495 次
发布时间:2019-06-24

本文共 1472 字,大约阅读时间需要 4 分钟。

Solitaire

题目连接:

Description

给你一个8*8棋盘,里面有4个棋子,每个棋子可以做一下某个操作之一:

1.走向相邻的空格

2.迈过相邻的棋子

然后给你初始状态和结束状态,问你能否得到呢?

Input

第一行给你4个初始状态棋子的坐标

第二行给你4个结束状态棋子的坐标

Output

输出能否从初始状态走到结束状态

Sample Input

4 4 4 5 5 4 6 5

2 4 3 3 3 6 4 6

Sample Output

YES

Hint

题意

题解:

由于是2002年的题,所以大概怎么搜都可以(他们并没有料到10年后的电脑会跑的这么快

我用的是meet in the mid,牺牲空间来换取时间

从终点和起点都搜一遍

这样跑的很快~

代码

#include
using namespace std;set
T[2];int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};struct node{ vector
>v;};int Bound(pair
x){ if(x.first<1||x.first>8)return 0; if(x.second<1||x.second>8)return 0; return 1;}int Hit(node tmp,pair
tt){ for(int i=0;i<4;i++) if(tmp.v[i]==tt) return 1; return 0;}int Hash(node tmp){ int res = 0; for(int i=0;i<4;i++) { res = res*10+tmp.v[i].first; res = res*10+tmp.v[i].second; } return res;}void dfs(node st,int step,int flag){ sort(st.v.begin(),st.v.end()); if(step==4) { T[flag].insert(Hash(st)); return; } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { pair
next = st.v[i]; next.first += dx[j]; next.second += dy[j]; if(Hit(st,next)) { next.first+=dx[j]; next.second+=dy[j]; } if(!Bound(next)) continue; node t=st; t.v[i]=next; dfs(t,step+1,flag); } }}int main(){ node k[2]; for(int i=0;i<2;i++) for(int j=0;j<4;j++) { int x,y;scanf("%d%d",&x,&y); k[i].v.push_back(make_pair(x,y)); } dfs(k[0],0,0); dfs(k[1],0,1); for(auto it:T[0]) if(T[1].find(it)!=T[1].end()) return puts("YES"); return puts("NO");}

转载地址:http://glkyo.baihongyu.com/

你可能感兴趣的文章
Poj(1469),二分图最大匹配
查看>>
和菜鸟一起学linux之V4L2摄像头应用流程【转】
查看>>
spin_lock、spin_lock_irq、spin_lock_irqsave区别【转】
查看>>
删除 mac 垃圾桶内清除不掉的文件
查看>>
【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
查看>>
/bin/bash^M: bad interpreter: No such file or dire
查看>>
python xml rpc
查看>>
Java设置以及获取JavaBean私有属性进阶
查看>>
db2表结构导出导入,数据库备份
查看>>
策略模式
查看>>
第二 周作业总结
查看>>
OrderOnline——项目概述
查看>>
POJ-2739(Water)
查看>>
【转】第三节 UNIX文件系统结构
查看>>
为什么sql里面not in后面的子查询如果有记录为NULL的,主查询就查不到记录
查看>>
关于windows2008r2系统80端口被system进程占用的问题
查看>>
Angular7里面实现 debounce search
查看>>
Linux 内核链表
查看>>
git学习------>Git 分支管理最佳实践
查看>>
awk-for循环简单用法
查看>>