2020东北大学NEU校赛热身赛:找猫猫
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校赛热身赛:找猫猫相关推荐
- 2020宁波市多校赛训练biu~
宁波市多校训题整理-未完待续... 一.宁波市多校训练(一) A - 或异或或异或或异或 题目描述 Input Output Sample Input Sample Output Hint AC代码 ...
- 校赛热身赛 Problem D. Unsolved Mystery
Problem D. Unsolved Mystery The world famous mathematician Wang Hao published a paper recently in th ...
- 2020蓝桥杯校赛部分题解
n对括号的合法括号序列数量 问题描述 由1对括号,可以组成一种合法括号序列: (). 由2对括号,可以组成两种合法括号序列: ()(),(()).由4对括号组成的合法括号序列一共有多少种? 答案提交 ...
- [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解
8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ 1112 I Love Apple Description So many people love app ...
- 吉首大学计算机老师向直阳,吉首大学2020年计算机程序设计竞赛校赛完美落幕...
9月26日由吉首大学教务处主办,吉首大学信息科学与工程学院承办的2020年计算机程序设计竞赛校赛完美落幕.本次比赛的参赛队员来自吉首大学各个学院的同学共同参与,共111人参与此次竞赛. 此次竞赛采用P ...
- 山东科技大学第二届ACM校赛解题报告
这次校赛的目的,是为了省赛测试各种程序是否有问题. 热身赛的逗比题有点打击我,感觉正式赛应该不会出这种问题.开始的时候直接上了A题,然后大概是第六,前面好多友情队,正式队排名第二. 然后读了读B题,稍 ...
- 2020第二周美赛感想
2020.03.10/11美赛结束后 问题出在哪 做的好的地方 分模块总结(有链接): 关于作图 关于查文献 关于查数据 关于排版 关于翻译和改错 最后 和数学建模结缘是在我们学校的校赛选拨时,前期 ...
- 大连海事大学ACM校赛题解
大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...
- [Error]校赛/ACM初级纸质备战资料——刷题大总结
校赛/ACM初级纸质备战资料 写在前面: 事先声明: 我这篇文章面向的是大一的计院新生,可以说在大一上并没有接触到太多的算法,这篇文章的资料也仅仅只能应付大一11月或12月举行的一些校赛选拔赛等小型基 ...
最新文章
- Java线程安全 关于原子性与volatile的试验
- 【Linux】6.服务器会话的screen用法
- 【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
- rsync实现文件同步
- 拒绝职场危机,程序员最核心的竞争力是什么?
- SpringCloud微服务详细流程
- k8s部署elasticsearch(包含数据挂载VOLUME)
- mysql-connector-java 5.1.13,Java连MySQL,mysql-connector-java-5.1.13-bin.jar究竟要怎
- unicode 表情对照表
- 图像金字塔——pyrDown和pyrUp
- 使用阿尔卑斯山法进行高效时间管理
- 训练多个epoch来提高训练模型的准确率
- 第十五天PAT-A1124 Raffle for Weibo Followers简单模拟测试点三错误说明
- 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》
- HDU 6078 Wavel Sequence(dp)
- WF(Workflow foundation)与Asp.net结合(二)
- 推荐10本C#编程的最佳书籍
- adb命令之pm hide 与 disable
- centos6.3下2T以上大硬盘如何部署和使用
- CT值及CT常用窗宽、窗位