【HDOJ】3220 Alice’s Cube
状态压缩+逆向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的更多相关文章
- 【HDOJ】4122 Alice's mooncake shop
RMQ的基础题目,简单题. /* 4122 */ #include <iostream> #include <sstream> #include <string> ...
- 【HDOJ】3660 Alice and Bob's Trip
就是一个基本的dfs.可关键问题是c/c++/g++光输入就超时了.还是写java过的,毕竟时限4s.都放弃希望了,没想到还真过了. import java.lang.*; import java.i ...
- 【HDOJ】3309 Roll The Cube
BFS,考虑一球进洞仅一球滚动以及两球重叠的情况即可. /* 3309 */ #include <iostream> #include <queue> #include < ...
- 【HDOJ】4801 Pocket Cube 的几种解法和优化
1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...
- 【HDOJ】3584 Cube
三位树状数组. /* 3584 */ #include <iostream> #include <string> #include <map> #include & ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【转】Kylin中的cube构建
http://blog.csdn.net/yu616568/article/details/50365240 前言 在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度 ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
随机推荐
- 『零行代码』解决键盘遮挡问题(iOS)
关注仓库,及时获得更新:iOS-Source-Code-Analyze https://github.com/draveness/iOS-Source-Code-Analyze Follow: Dra ...
- js原型继承
原型链: Object(构造函数) object(类型(对象)) var o = {}; alert(typeof o); //结果是object alert(typeof Object); //结果 ...
- Java基础知识强化之集合框架笔记32:集合之可变参数的概述和使用
1. 可变参数的概述和使用: (1)可变参数:定义方法的时候不知道该定义多少个参数(2)格式: 修饰符 返回值类型 方法名(数据类型… 变量名){ } 注意: 这里的变量其实是一个数 ...
- [Redis] windows下安装 Redis
一:Redis是什么? Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 通过https://github.c ...
- ASP.NET MVC5框架揭秘 学习笔记01
1.自治视图 在早期(作者也没说明是多早,自己猜吧),我们倾向于将所有与UI相关的操作糅合在一起(现在我身边还有很多人这样做),这些操作包括UI界面的呈现. 用户交互操作的捕捉与响应(UI处理逻辑). ...
- 遍历id,根据id作为条件循环查询。
string id = "OE09924008161405102,OE36765709071405102,OE87852044171405102,OE09924008161405102&qu ...
- Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务
1.BootCompletedReceiver.Java文件 public class BootCompletedReceiver extends BroadcastReceiver { @Overr ...
- 取出当前会话的sid等
select distinct sess.SID db_sid, sess.SERIAL# db_serial#, process. ...
- [转]Delphi中ShellExecute的妙用
Delphi中ShellExecute的妙用 ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. ...
- 内置方法+lambda是pythonic的利器
python可以写的非常简洁,通过使用内置的map,reduce,filter,lambda方法,非常具有文艺范. 举个例子,例如 def fromIpToNum(ipAddr): return ...