HDU 5025 Saving Tang Monk

题目链接

思路:记忆化广搜,vis[x][y][k][s]表示在x, y结点,有k把钥匙了,蛇剩余状态为s的步数,先把图预处理出来,然后进行广搜即可

代码:

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;const int INF = 0x3f3f3f3f;
const int N = 105;
const int d[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};int n, m, g[N][N], sn, vis[N][N][10][35];
char str[N];struct State {int x, y, k, s;State() {}State(int x, int y, int k, int s) {this->x = x;this->y = y;this->k = k;this->s = s;}int get() {return vis[x][y][k][s];}
} s, e;bool solve() {queue<State> Q;Q.push(s);memset(vis, INF, sizeof(vis));vis[s.x][s.y][0][0] = 0;while (!Q.empty()) {State u = Q.front();Q.pop();for (int i = 0; i < 4; i++) {State v = u;int ti = u.get();int x = u.x + d[i][0];int y = u.y + d[i][1];if (x < 0 || x >= n || y < 0 || y >= n) continue;if (g[x][y] == -10) continue;else if (g[x][y] < 0) {int nu = -g[x][y] - 1;v.x = x; v.y = y;if (v.s&(1<<nu))ti++;else {v.s |= (1<<nu);ti += 2;}} else {v.x = x; v.y = y;if (g[x][y] == v.k + 1)v.k = g[x][y];ti++;}if (vis[v.x][v.y][v.k][v.s] > ti) {vis[v.x][v.y][v.k][v.s] = ti;Q.push(v);}}}int ans = INF;for (int i = 0; i < 32; i++)ans = min(vis[e.x][e.y][e.k][i], ans);if (ans == INF) return false;printf("%d\n", ans);return true;
}int main() {while (~scanf("%d%d", &n, &m) && n || m) {sn = 0;for (int i = 0; i < n; i++) {scanf("%s", str);for (int j = 0; j < n; j++) {if (str[j] == 'K') {g[i][j] = 0;s = State(i, j, 0, 0);}if (str[j] == 'T') {g[i][j] = 0;e = State(i, j, m, 0);}if (str[j] >= '1' && str[j] <= '9')g[i][j] = str[j] - '0';if (str[j] == '#')g[i][j] = -10;if (str[j] == '.')g[i][j] = 0;if (str[j] == 'S')g[i][j] = (--sn);}}if (!solve()) printf("impossible\n");}return 0;
}

HDU 5025 Saving Tang Monk(广州网络赛D题)相关推荐

  1. 2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)

    1 /* 2 这是我做过的一道新类型的搜索题!从来没想过用四维数组记录状态! 3 以前做过的都是用二维的!自己的四维还是太狭隘了..... 4 5 题意:悟空救师傅 ! 在救师父之前要先把所有的钥匙找 ...

  2. HDU - 5875 2016 ACM/ICPC 大连网络赛 H题 暴力

    题目链接 题意:给你一个区间l,r一直将val[l]模上val[l+1],val[l+2]...val[r],因为一个模上比前一个数小数是没有意义的,所以需要将每一个点找到右边第一个小于他的点就行. ...

  3. HDU 5025:Saving Tang Monk(BFS + 状压)

    http://acm.hdu.edu.cn/showproblem.php?pid=5025 Saving Tang Monk Problem Description <Journey to t ...

  4. 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)

    2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...

  5. ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)

    ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题) 1.题目描写叙述:点击打开链接 2.解题思路:本题是四色定理的模板题.只是有几种情况要提前特判一下:n==1直 ...

  6. Saving Tang Monk II HihoCoder - 1828(2018北京网络赛三维标记+bfs)

    <Journey to the West>(also <Monkey>) is one of the Four Great Classical Novels of Chines ...

  7. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A Saving Tang Monk II【分层bfs】

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 <Journey to the West>(also <Monkey>) is one of the ...

  8. #hihoCoder #1828 : Saving Tang Monk II (分层BFS)

    描述 <Journey to the West>(also <Monkey>) is one of the Four Great Classical Novels of Chi ...

  9. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

最新文章

  1. 【路径规划】Dijkstra算法——超详细原理图解
  2. python是基于哪个系统的_python能检测到它运行的是哪个操作系统?
  3. QDoc文字标记textmarkup
  4. 计算机平面设计专业有哪些课程,计算机平面设计专业课程有哪些?
  5. android studio jni so,Android studio JNI 制做SO文件,在其余项目中调用
  6. python中出现UserWarning: libuv only supports millisecond timer resolution怎么解决
  7. Android Studio工程项目打包成SDK(jar或aar格式)
  8. agax分页查询必知知识,分页必须参数详解
  9. 到底是人玩了游戏,还是游戏玩了人?----随笔心情
  10. EZCast v2.8.0.1206
  11. 开源游戏服务器框架汇总
  12. 怎么用html3秒自动跳网页,HTML页面3秒后自动跳转的三种常见方法
  13. 【毕业设计】STM32单片机的智能手环 - 蓝牙手环 物联网
  14. 第七届万向区块链全球峰会 | 邹传伟:元宇宙经济学
  15. 7-2 词典 (15分)19物联网张春
  16. 百度/Google 高级搜索语法大全
  17. Unity3D 5.5 Baked view问题
  18. Qt编写地图综合应用59-经纬度坐标纠偏
  19. 生产者消费者模型详解以及实现
  20. 米思齐编程?很简单。

热门文章

  1. Android Studio Emulator: Process finished with exit code 1 问题解决
  2. 【直觉建设】归纳偏差与选择性偏差
  3. 线性回归系数求解及Python实现
  4. 专利被驳回,怎么办?
  5. (黑)React教程(2022-11-20)
  6. java 随机数random
  7. 推荐的截图工具,超级好用的几款小工具
  8. 区块链应用新突破!北京外企科技与杭州模样网络科技就Avatar项目签署战略合作协议...
  9. WAS用命令创建节点
  10. 圣诞节快到了,用python绘制高级版圣诞树(小彩灯+落叶+静态雪花+动态雪花+唱歌+祝福弹窗+圣诞树词云图),直夸好看