【HDOJ】1429 胜利大逃亡(续)
BFS+状态压缩,做了很多状态压缩了。今晚把八数码问题给搞定了。
#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std; typedef struct node_st {
int x, y, t;
int key;
node_st() {}
node_st(int xx, int yy, int tt, int kk) {
x = xx; y = yy; t = tt; key = kk;
}
} node_st; char map[][];
char visit[<<][][];
int direct[][] = {{-,},{,},{,-},{,}};
int n, m, time; int bfs(int bx, int by) {
int x, y, key, t;
int i, tmp;
queue<node_st> que;
node_st node; memset(visit, , sizeof(visit));
visit[bx][by][] = ;
que.push(node_st(bx,by,,)); while ( !que.empty() ) {
node = que.front();
if (node.t >= time)
return -;
if (map[node.x][node.y] == '^')
return node.t;
que.pop();
t = node.t + ;
for (i=; i<; ++i) {
x = node.x + direct[i][];
y = node.y + direct[i][];
if (x< || x>=n || y< || y>=m)
continue;
if (map[x][y]>='a' && map[x][y]<='j')
key = node.key | (<<(map[x][y]-'a'));
else
key = node.key;
if (visit[key][x][y] || map[x][y]=='*')
continue;
if (map[x][y]>='A' && map[x][y]<='J') {
tmp = (<<(map[x][y]-'A')) & key;
if ( !tmp )
continue;
}
que.push(node_st(x,y,t,key));
visit[key][x][y] = ;
}
} return -;
} int main() {
int bx, by;
int i, j; while (scanf("%d %d %d", &n, &m, &time) != EOF) {
for (i=; i<n; ++i) {
scanf("%s", map[i]);
for (j=; j<m; ++j) {
if (map[i][j] == '@') {
bx = i;
by = j;
}
}
}
i = bfs(bx, by);
printf("%d\n", i);
} return ;
}
【HDOJ】1429 胜利大逃亡(续)的更多相关文章
- hdoj 1429 胜利大逃亡(续) 【BFS+状态压缩】
		题目:pid=1429">hdoj 1429 胜利大逃亡(续) 同样题目: 题意:中文的,自己看 分析:题目是求最少的逃亡时间.确定用BFS 这个题目的难点在于有几个锁对于几把钥匙.唯 ... 
- HDOJ 1429 胜利大逃亡(续)
		胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ... 
- HDOJ 1429 胜利大逃亡(续) (bfs+状态压缩)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 思路分析:题目要求找出最短的逃亡路径,但是与一般的问题不同,该问题增加了门与钥匙约束条件: 考虑 ... 
- hdu 1429 胜利大逃亡(续)
		题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王 ... 
- HDU 1429 胜利大逃亡(续)(bfs+状态压缩,很经典)
		传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ... 
- hdu.1429.胜利大逃亡(续)(bfs + 0101011110)
		胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ... 
- Hdu 1429 胜利大逃亡(续)                                                    分类:            Brush Mode             2014-08-07 17:01    92人阅读    评论(0)    收藏
		胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ... 
- hdu 1429 胜利大逃亡(续)(bfs+位压缩)
		胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ... 
- HDU 1429 胜利大逃亡(续)(DP + 状态压缩)
		胜利大逃亡(续) Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢 ... 
- HDU 1429 胜利大逃亡(续)(bfs)
		胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ... 
随机推荐
- CentOS 6.7安装配置Ansible
			1.准备CentOS环境 yum update && yum upgrade 2.控制服务器与被管理服务器要求 Master:Python 2.6+ Slave:Python 2.4+ ... 
- 20、CSS
			CSS 层叠样式表(Cascading Style Sheets). 用于定义显示HTML样式. DIV和SPAN div是块级元素. span是行级元素. 将一些页面中的内容包裹起来统一设置样式. ... 
- JavaScript中一些你不一定知道的问题(持续更新中。。。。)
			一些js的问题与解析 1) ["1","2","3"].map(parseInt);的运行结果是? A.["1",&qu ... 
- <>跟!=
			这两个是没有区别的,都是不等于 
- JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解
			以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ... 
- 微信热修复tinker及tinker server快速接入
			博客: 安卓之家 掘金: jp1017 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 当前热修复方案很多,今天研究了下微信的tinker,使用效果还是不错的,配合tinker serv ... 
- DNS(域名系统)域名解析设置
			DNS(Domain Name System,域名系统), 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最 ... 
- mvc性能优化
			mvc性能优化 (1)移动设备卡顿问题 -1请求方式 在mvc中GET请求有问题,出现错误 在MVC中在进行GET请求获取JSON数据时,需要进行如下设置: return Json("&qu ... 
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
			本站的 Rio 最近在一台 Ubuntu 和一台 Debian 主机上配置了 L2TP / IPSec VPN,并在自己的博客上做了记录.原文以英文写就,我把它大致翻译了一下,结合我和 Rio 在设置 ... 
- jquery  table的隔行变色 鼠标事件
			一.鼠标事件 mouseover(function(){}); 鼠标移动到目标事件 mouseout(function(){}); 鼠标离开目标的事件 二.具体应用代码 <body> &l ... 
