HDU - 1429 胜利大逃亡(续) (BFS+状压)
题目链接
思路
因为新拿到一把钥匙所以相同位置可以重复走,一共10把钥匙二进制表示拿到的钥匙,判断下个位置是否可以走。
#include <bits/stdc++.h>
const int maxn = 1e5 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
using namespace std;
char g[25][25];
int sx, sy, ex, ey;
int n, m, t;
int vis[25][25][1<<10];
int d[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};
struct ac{int x, y, c, key;
};
int check(int x, int y) {if (x < 0 || y < 0 || x >= n || y >= m || g[x][y] == '*') return 1;return 0;
}
int bfs() {queue<ac> que;memset(vis, 0, sizeof(vis));que.push({sx, sy, 0, 0});vis[sx][sy][0] = 1;while (!que.empty()) {ac f = que.front();que.pop();int dx, dy;for (int i = 0; i < 4; ++i) {int key = f.key;dx = f.x + d[i][0];dy = f.y + d[i][1];if (check(dx, dy) || vis[dx][dy][key]) continue;vis[dx][dy][key] = 1;if (g[dx][dy] >= 'A' && g[dx][dy] <= 'J' && (key >> (g[dx][dy]-'A')) % 2 == 0) continue;if (g[dx][dy] >= 'a' && g[dx][dy] <= 'j') key |= 1 << (g[dx][dy] - 'a');if (g[dx][dy] == '^') return f.c+1 < t ? f.c+1 : -1;vis[dx][dy][key] = 1;que.push({dx, dy, f.c+1, key});}}return -1;
}
int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);while (scanf("%d %d %d", &n, &m, &t) != EOF) {for (int i = 0; i < n; ++i) scanf("%s", g[i]);for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (g[i][j] == '@') sx = i, sy = j;}}int ans = bfs();printf("%d\n", ans);}return 0;
}
HDU - 1429 胜利大逃亡(续) (BFS+状压)相关推荐
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1429 胜利大逃亡(续) bfs+状态压缩
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU 1429 胜利大逃亡(续)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- hdu 1429 胜利大逃亡(续)
状态压缩+宽搜 #include<cstdio> #include<iostream> #include<cstring> #include<queue> ...
- BFS——1429 胜利大逃亡(续)
1429 胜利大逃亡(续) 文章目录 1429 胜利大逃亡(续) 题意: 思路: 本题的重点在于标记数组,除了基本的坐标 ( x , y ) (x,y) (x,y)以外,在同一位置是否有某个钥匙显然会 ...
- hdu 杭电1429 胜利大逃亡(续)
题目表述 Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)-- 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些 ...
- hdu 1253 胜利大逃亡(BFS)
题目链接:点击链接 三维的BFS,刚开始一直超内存,超无语...... 改了n多次终于AC了 #include <iostream> #include <stdio.h> # ...
- HDOJ1429(胜利大逃亡(续))
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU-1429 胜利大逃亡(续)
A - 胜利大逃亡(续) Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
最新文章
- RPi 2B UART作为调试口或者普通串口
- XAML特殊字符 (转)
- 旷视《人工智能应用准则》全文公布 提倡善用AI技术
- Springboot简单应用
- 2018年编程语言排行榜_这是2018年学习的最佳编程语言
- window下tomcat 按天生成日志_Tomcat原理(一)
- 在Ubuntu和Linux 中安装虚拟机以及安装Windows 10
- 【Proteus仿真】L297驱动步进电机
- 一文了解推挽输出结构Output_push_pull
- 开源分布式定时任务框架技术选型
- ubuntu-Errors were encountered while processing
- ESN(Electronic Serial Number,电子序列号)简介
- Amlogic 4K UI显示
- NCBI上基因前面有个accession(编号)分别有NC是什么意思
- MQTT网关连接阿里云平台案例教程
- 机器学习-预剪枝和后剪枝
- [GXYCTF2019]禁止套娃--详解
- 腾讯大咖分享 | 腾讯Alluxio(DOP)在金融场景的落地与优化实践
- 最强的数据扩增方法竟然是添加标点符号?
- java编写的atm机项目结题报告_《计算机学院视频教程网站的创建》教学研究项目结题报告.pdf...