Problem: 找猫猫
Time limit: 1s Mem limit: 64 MB
Problem Description
猫猫和嘟嘟一起打游戏, 猫猫被困在了M点不能移动,每一秒减少一个单位的HP, 需要队友嘟嘟来救。但是现在嘟嘟不在猫猫旁边,而是在远离猫猫的另一个D点。当猫猫的HP变成负数之后,猫猫的人物就会死亡,而猫猫就会不高兴。为了让猫猫能继续玩下去, 嘟嘟需要马上到M点去救猫猫(嘟嘟到达后可以让猫猫的HP增加并且可以离开M点)。
现在给你这个n*m的游戏地图, D代表嘟嘟的位置,M代表猫猫的位置,*代表可以走的路,#代表不能翻越的墙。已知现在猫猫的HP为t个单位,嘟嘟每1秒只能移动1个格子,只能走上下左右四个方向(不能斜着走,即四联通) 。
现在问你,嘟嘟能不能在猫猫HP变为负数之前到达M点? 如果能到达,请输出猫猫最小损失的HP。不然,游戏结束,猫猫很生气,嘟嘟会跪机械键盘的,所以就要输出一行字符串:“OMG! DUDU is bound to Kneel keyboard”(没有引号)。

Input
第一行一个整数T,代表有T组数据。
每组数据的第一行有三个整数m, n, t,分别表示地图的行数、地图的列数和猫猫的HP。 (0<=m,n<=10 0<=t<=100)
接下来有m行数据,每行n个字符,代表一个mn的矩阵,矩阵有且仅有’D’ ’M’ ‘’ ‘#’字符组成(没有引号)

Output
如果嘟嘟能在猫猫HP变为负数之前到达M点,则输出猫猫损失的最小HP。
否则输出“OMG! DUDU is bound to Kneel keyboard”(没有引号)

Sample Input
2
3 3 10
D**
#
#M*
3 3 2
D**
#
#M*
Sample Output

5
OMG! DUDU is bound to Kneel keyboard

这是一道广度优先搜索的例题,深度优先搜索虽然可以得出答案但是容易超时,广度优先搜索的思路是从起点开始向可以走的方向辐射出去搜索,搜到终点时停止。广度优先搜索一旦搜索到终点就肯定是最短路径,相比深度优先搜索来说内存占用多一些,但是快得多。

下面是BFS解法代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>using namespace std;
typedef long long ll;
const int M = 1005;
const int INF = 0x3f3f3f3f;struct Node
{int x, y, step;// 记录点和当前步数
};
queue <Node> Q;
int maze[15][15], m, n, t, x, y;// maze记录已经去过的点,防止重复遍历,m和n是长和宽,t是最大HP,x和y是终点坐标
// 广度优先搜索
void bfs()
{int nx, ny, step;while(!Q.empty()){Node pt = Q.front();// 导出目前搜索的点Q.pop();nx = pt.x;ny = pt.y;step = pt.step;if (nx == x && ny == y)// 坐标符合则结束搜索{if (step <= t) printf("%d\n", step);// HP未为负else printf("OMG! DUDU is bound to Kneel keyboard\n");// 到达了点但是HP为负return;}// 四方向搜索if (nx >= 1 && !maze[nx-1][ny]){Node ptt = {nx-1, ny, step+1};maze[nx-1][ny] = 1;Q.push(ptt);}if (nx <= m && !maze[nx+1][ny]){Node ptt = {nx+1, ny, step+1};maze[nx+1][ny] = 1;Q.push(ptt);}if (ny >= 1 && !maze[nx][ny-1]){Node ptt = {nx, ny-1, step+1};maze[nx][ny-1] = 1;Q.push(ptt);}if (ny <= n && !maze[nx][ny+1]){Node ptt = {nx, ny+1, step+1};maze[nx][ny+1] = 1;Q.push(ptt);}}// 终点属于不能到达的类型,可去的点全部搜索完毕也无法到达,输出失败结果printf("OMG! DUDU is bound to Kneel keyboard\n");
}
int main()
{int T;scanf("%d", &T);while(T--){// 初始化while(!Q.empty())Q.pop();memset(maze, 0, sizeof(maze));char line[15];scanf("%d%d%d", &m, &n, &t);for(int i = 1; i <= m; i++){scanf("%s", line);for(int j = 1; j <= n; j++){// 记录起点和终点,以及不能去的点if (line[j-1] == 'D'){maze[i][j] = 1;Node pt = {i, j, 0};Q.push(pt);}else if (line[j-1] == 'M'){x = i;y = j;}else if (line[j-1] == '#')maze[i][j] = 1;}}// 开始BFS计算bfs();}return 0;
}

在做类似这种题目时,建议使用广搜节省时间。

2020东北大学NEU校赛热身赛:找猫猫相关推荐

  1. 2020宁波市多校赛训练biu~

    宁波市多校训题整理-未完待续... 一.宁波市多校训练(一) A - 或异或或异或或异或 题目描述 Input Output Sample Input Sample Output Hint AC代码 ...

  2. 校赛热身赛 Problem D. Unsolved Mystery

    Problem D. Unsolved Mystery The world famous mathematician Wang Hao published a paper recently in th ...

  3. 2020蓝桥杯校赛部分题解

    n对括号的合法括号序列数量 问题描述 由1对括号,可以组成一种合法括号序列: (). 由2对括号,可以组成两种合法括号序列: ()(),(()).由4对括号组成的合法括号序列一共有多少种? 答案提交 ...

  4. [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解

    8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ  1112 I Love Apple Description So many people love app ...

  5. 吉首大学计算机老师向直阳,吉首大学2020年计算机程序设计竞赛校赛完美落幕...

    9月26日由吉首大学教务处主办,吉首大学信息科学与工程学院承办的2020年计算机程序设计竞赛校赛完美落幕.本次比赛的参赛队员来自吉首大学各个学院的同学共同参与,共111人参与此次竞赛. 此次竞赛采用P ...

  6. 山东科技大学第二届ACM校赛解题报告

    这次校赛的目的,是为了省赛测试各种程序是否有问题. 热身赛的逗比题有点打击我,感觉正式赛应该不会出这种问题.开始的时候直接上了A题,然后大概是第六,前面好多友情队,正式队排名第二. 然后读了读B题,稍 ...

  7. 2020第二周美赛感想

    2020.03.10/11美赛结束后 问题出在哪 做的好的地方 分模块总结(有链接): 关于作图 关于查文献 关于查数据 关于排版 关于翻译和改错 最后  和数学建模结缘是在我们学校的校赛选拨时,前期 ...

  8. 大连海事大学ACM校赛题解

    大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...

  9. [Error]校赛/ACM初级纸质备战资料——刷题大总结

    校赛/ACM初级纸质备战资料 写在前面: 事先声明: 我这篇文章面向的是大一的计院新生,可以说在大一上并没有接触到太多的算法,这篇文章的资料也仅仅只能应付大一11月或12月举行的一些校赛选拔赛等小型基 ...

最新文章

  1. Java线程安全 关于原子性与volatile的试验
  2. 【Linux】6.服务器会话的screen用法
  3. 【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
  4. rsync实现文件同步
  5. 拒绝职场危机,程序员最核心的竞争力是什么?
  6. SpringCloud微服务详细流程
  7. k8s部署elasticsearch(包含数据挂载VOLUME)
  8. mysql-connector-java 5.1.13,Java连MySQL,mysql-connector-java-5.1.13-bin.jar究竟要怎
  9. unicode 表情对照表
  10. 图像金字塔——pyrDown和pyrUp
  11. 使用阿尔卑斯山法进行高效时间管理
  12. 训练多个epoch来提高训练模型的准确率
  13. 第十五天PAT-A1124 Raffle for Weibo Followers简单模拟测试点三错误说明
  14. 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》
  15. HDU 6078 Wavel Sequence(dp)
  16. WF(Workflow foundation)与Asp.net结合(二)
  17. 推荐10本C#编程的最佳书籍
  18. adb命令之pm hide 与 disable
  19. centos6.3下2T以上大硬盘如何部署和使用
  20. CT值及CT常用窗宽、窗位

热门文章

  1. AD20 对齐快捷键
  2. 基于激光雷达实现三边定位算法开发记录(二)——查找多个反光柱数据
  3. 一个破解游戏双开的问题
  4. 从 GitHub 火到 CSDN 共计 1658 页的 Java 岗面试核心 PDF 版,拿走不谢
  5. 堡垒之夜手游怎么在电脑上玩 堡垒之夜手游电脑版教程
  6. HTML $ CSS基本用法总结
  7. 利用PCA进行数据压缩
  8. 什么是论坛虚拟主机?如何挑选?
  9. matlab交互式gui,利用MATLAB的GUI功能制作交互式演示实验软件
  10. cpu测试shell脚本