状态压缩+逆向BFS。
方向数组就是任意相邻的两点(初始化时减1),每个顶点均有4个相邻点。因此,共有16*4/2=32个方向。按序排列即可找到。

 /* 3220 */
#include <iostream>
#include <queue>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std; char visit[<<];
const int end = 0x0ff;
int beg;
int dir[][] = {
,, ,, ,, ,,
,, ,, ,,
,, ,, ,,
,, ,,
,, ,, ,,
,, ,,
,, ,,
,,
,, ,, ,,
,, ,,
,, ,,
,,
,, ,,
,,
,
}; void bfs() {
int i, j, k, tmp;
queue<int> Q;
int a, b, s;
char t; memset(visit, -, sizeof(visit));
visit[end] = ;
Q.push(end); while (!Q.empty()) {
s = Q.front();
Q.pop();
t = visit[s];
if (t >= )
continue;
++t;
for (i=; i<; ++i) {
a = s & (<<dir[i][]);
b = s & (<<dir[i][]);
if (a ^ b) {
tmp = (s ^ (<<dir[i][])) ^ (<<dir[i][]);
if (visit[tmp] < ) {
visit[tmp] = t;
Q.push(tmp);
}
}
}
}
} void init() {
int i; for (i=; i<; ++i) {
--dir[i][];
--dir[i][];
} bfs();
} int main() {
int t, tt;
int i, j, k; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif init();
scanf("%d", &tt);
for (t=; t<=tt; ++t) {
beg = ;
for (i=; i>=; --i) {
scanf("%d", &j);
if (j)
beg |= (<<i);
}
k = visit[beg];
if (k < )
printf("Case #%d: more\n", t);
else
printf("Case #%d: %d\n", t, k);
} return ;
}

【HDOJ】3220 Alice’s Cube的更多相关文章

  1. 【HDOJ】4122 Alice's mooncake shop

    RMQ的基础题目,简单题. /* 4122 */ #include <iostream> #include <sstream> #include <string> ...

  2. 【HDOJ】3660 Alice and Bob's Trip

    就是一个基本的dfs.可关键问题是c/c++/g++光输入就超时了.还是写java过的,毕竟时限4s.都放弃希望了,没想到还真过了. import java.lang.*; import java.i ...

  3. 【HDOJ】3309 Roll The Cube

    BFS,考虑一球进洞仅一球滚动以及两球重叠的情况即可. /* 3309 */ #include <iostream> #include <queue> #include < ...

  4. 【HDOJ】4801 Pocket Cube 的几种解法和优化

    1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...

  5. 【HDOJ】3584 Cube

    三位树状数组. /* 3584 */ #include <iostream> #include <string> #include <map> #include & ...

  6. 【HDOJ】4729 An Easy Problem for Elfness

    其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...

  7. 【转】Kylin中的cube构建

    http://blog.csdn.net/yu616568/article/details/50365240 前言   在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度 ...

  8. 【HDOJ】【3506】Monkey Party

    DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...

  9. 【HDOJ】【3516】Tree Construction

    DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...

随机推荐

  1. SystemTap----常用变量、宏、函数和技巧

    http://blog.csdn.net/moonvs2010/article/category/1570309

  2. linux下MySQL安装登录及操作

    linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-cl ...

  3. Android(java)学习笔记202:Handler消息机制的原理和实现

     联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系   1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...

  4. Mac OS命令行运行Sublime Text

    Opening Sublime Text on command line as subl on Mac OS? Mac OS subl http://www.phodal.com/blog/mac-o ...

  5. Java——(十)网络编程

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.Java的基本网络支持 Java为网络支持提供了java.net包,该包下的URL和URLC ...

  6. Restart-ServiceEx.psm1

    详细描述 利用WMI的Win32_Service类重启指定计算机上的服务. Restart-ServiceEx cmdlet 通过WMI的Win32_Service类向指定计算机(ComputerNa ...

  7. 2.添加键盘钩子。向进程中注入dll

    学习笔记 1.首先要建立mfc的动态链接库.在def文件中放入要导出的函数名. 2.添加函数如下 //安装钩子 //HHOOK SetWindowsHookEx( // int idHook,//钩子 ...

  8. alpha属性设置

    alpha是来设置透明度的,它的基本属性是filter:alpha(opacity,finishopacity,style,startX,startY,finishX,finishY).opacity ...

  9. jquery---点击弹出层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 数据库导出excel表数据

    - 执行之前 (错误) 消息 错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS_E_OLEDBERROR.出现 OLE DB 错误.错误代码: 0x80040E37.  (S ...