大力搜,状态用一个16位的数字表示。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 #define rep(i,a,b)              for(int i(a); i <= (b); ++i)
 6
 7 const int A     =    30          +       1;
 8
 9 struct node{int x, y; } op[A];
10 struct Node{int num, step;} now, np;
11
12 char st[A][A];
13 int f[A][A];
14 int h[1 << 18];
15 int x, y, nx, ny, s, t, cnt = 0;
16
17 queue <Node> Q;
18
19 int main(){
20
21     rep(i, 1, 8) scanf("%s", st[i] + 1);
22     cnt = 0;
23     rep(i, 1, 4) rep(j, 1, 4) f[i][j] = cnt++;
24     rep(i, 5, 8) rep(j, 1, 4) f[i][j] = f[i - 4][j];
25
26     s = 0, t = 0;
27
28     rep(i, 1, 4) rep(j, 1, 4) if (st[i][j] == '1') s |= (1 << f[i][j]);
29     rep(i, 5, 8) rep(j, 1, 4) if (st[i][j] == '1') t |= (1 << f[i][j]);
30
31     cnt = 0;
32
33     rep(i, 1, 3) rep(j, 1, 4){ op[++cnt].x = f[i][j], op[cnt].y = f[i + 1][j];}
34     rep(i, 1, 4) rep(j, 1, 3){ op[++cnt].x = f[i][j], op[cnt].y = f[i][j + 1];}
35
36     memset(h, 0, sizeof h); h[s] = 1; Q.push({s, 0});
37
38     while (!Q.empty()){
39         np = Q.front(); Q.pop();
40         if (np.num == t){
41             printf("%d\n", np.step);
42             break;
43         }
44         rep(i, 1, cnt){
45             now = np;
46             x = op[i].x, y = op[i].y;
47             nx = (now.num >> x) & 1, ny = (now.num >> y) & 1;
48             if (nx ^ ny){
49                 now.num ^= (1 << x);
50                 now.num ^= (1 << y);
51             }
52
53             if (!h[now.num]){
54                 h[now.num] = 1;
55                 Q.push({now.num, now.step + 1});
56             }
57         }
58     }
59
60     return 0;
61
62 }

转载于:https://www.cnblogs.com/cxhscst2/p/6351832.html

BZOJ1054(搜索)相关推荐

  1. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  2. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

    1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...

  3. Windows10自带搜索增强设置

    操作系统:Windows10 前言:Windows自带的搜索速度非常慢,因此有人借助Everything等索引软件进行搜索,能够显著提升搜索速度.但是Windows自带的搜索在进行一些设置以后也能达到 ...

  4. listary 指定目录搜索_everything

    20211009 https://zhuanlan.zhihu.com/p/225414423 listary详细使用 20210710 everything搜索文件,结果出现相同的2个重复情况,路径 ...

  5. LeetCode简单题之二叉搜索树中的搜索

    题目 给定二叉搜索树(BST)的根节点 root 和一个整数值 val. 你需要在 BST 中找到节点值等于 val 的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 null . 示例 1 ...

  6. Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...

  7. 目标识别的选择性搜索

    目标识别的选择性搜索 Selective Search for Object Recognition 论文地址: https://ivi.fnwi.uva.nl/isis/publications/b ...

  8. 2021年大数据ELK(四):Lucene的美文搜索案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 美文搜索案例 一.需求 二.准备工作 1.创建IDEA项目 2. ...

  9. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

最新文章

  1. php扩展xdebug基本使用
  2. LeetCode 421. Maximum XOR of Two Numbers in an Array--Python解法
  3. [Linux]Linux下网络配置文件总结(转)
  4. python保存快捷键_超详细的Sublime Text配置python教程
  5. python opengl加速_OpenGL with python 渲染加速
  6. 2015年百度之星初赛(1) --- A 超级赛亚ACMer
  7. rxjs fromEvent的用法
  8. [转]DPM2012系列之十八:如何保护工作组计算机
  9. MySQL之流程控制结构(分支,循环)
  10. 推荐系统系列教程之十一:那些在Netflix Prize中大放异彩的推荐算法
  11. 使用SQL Server数据工具进行SQL单元测试
  12. python 菜鸟-Python IDE
  13. android转iOS看什么书,一起聊聊:是什么让你从Android转向iOS?
  14. 浏览器默认事件,事件监听,事件委托
  15. 理解 __doPostBack--2
  16. android nano app,实战nanoHTTPD嵌入android app(3)
  17. 第四章、Zigbee模块的设置及组网
  18. 2020家用千兆路由器哪款好_2020年500元以内23款无线路由器推荐,贵就好吗?
  19. 《ArcGIS10.2》 Part1 在地图上标注地名或坐标
  20. 基于JavaSSM和微信小程序的智能二维码门禁管理系统

热门文章

  1. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  2. c++builder提高批量动态创建panel的速度_骑行时影响速度的事项有哪些 怎样有效提高骑行速度 单车租赁信息...
  3. NXP S32K144开发(一)环境搭建和新建工程
  4. Please use boost/bind/bind.hpp + using namespace boost::placeholders
  5. 数据结构--数组实现线性表
  6. 修改无效_修改劳动合同日期被认定无效,青岛一企业被判赔双倍工资
  7. leetcode 35. 搜索插入位置 思考分析
  8. 软件故障_一些主要的软件故障
  9. math.sqrt 有问题_JavaScript中带有示例的Math.SQRT2属性
  10. Java PushbackInputStream markSupported()方法与示例