洛谷——P2298 Mzc和男家丁的游戏
P2298 Mzc和男家丁的游戏
题目背景
mzc与djn的第二弹。
题目描述
mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道)。他把她们召集在了一起,他们决定玩捉迷藏。现在mzc要来寻找他的男家丁,大家一起来帮忙啊!
由于男家丁数目不多,再加上mzc大大的找人【laopo】水平很好,所以一次只需要找一个男家丁。
输入输出格式
输入格式:
第一行有两个数n,m,表示有n行m列供男家丁躲藏,
之后n行m列的矩阵,‘m‘表示mzc,‘d’表示男家丁,‘#’表示不能走,‘.‘表示空地。
输出格式:
一行,若有解:一个数sum,表示找到男家丁的最短移动次数。
若无解:输出“No Way!”。
输入输出样例
5 6 .#..#. ....#. d..... #####. m.....
12
说明
3=<M,n<=2000
由于mzc大大十分着急,所以他只能等待1S。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 2100 using namespace std; char ch[N][N]; int n,m,ans,sx,sy; bool vis[N][N],flag; ]={-,,,},yy[]={,,,-}; void dfs(int x,int y,int s) { if(ch[x][y]=='d') { flag=true; ans=min(ans,s); return ; } ||y<||x>n||y>m||vis[x][y]) return ; vis[x][y]=true;++s; ;i<;i++) { int fx=x+xx[i],fy=y+yy[i]; dfs(fx,fy,s); } vis[x][y]=false; } int main() { scanf("%d%d",&n,&m); ;i<=n;i++) ;j<=m;j++) { cin>>ch[i][j]; if(ch[i][j]=='m') sx=i,sy=j; if(ch[i][j]=='#') vis[i][j]=true; } ans=); if(!flag) printf("No Way!"); else printf("%d",ans); ; }
20分超时的dfs
bfs水过,我们可以知道第一个搜到的家丁的位置即为最优的,直接输出答案。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 2200 using namespace std; char ch[N][N]; bool vis[N][N],flag; ]={-,,,},yy[]={,,,-}; ],d[N][N]; int main() { scanf("%d%d",&n,&m); ;i<=n;i++) ;j<=m;j++) { cin>>ch[i][j]; if(ch[i][j]=='m') sx=i,sy=j; if(ch[i][j]=='#') vis[i][j]=true; } q[tail][]=sx,q[tail][]=sy;++tail; memset(d,; while(head<tail) { x=q[head][],y=q[head][]; ;} ++head; ;i<;i++) { int fx=x+xx[i],fy=y+yy[i]; ||fy<||fx>n||fy>m||vis[fx][fy]) continue; )) d[fx][fy]=d[x][y]+,q[tail][]=fx,q[tail][]=fy,++tail; } } printf("No Way!"); ; }
洛谷——P2298 Mzc和男家丁的游戏的更多相关文章
- 洛谷 P2298 Mzc和男家丁的游戏
P2298 Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来 ...
- Luogu P2298 Mzc和男家丁的游戏
Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来寻找他的男家 ...
- 【luogu P2298 Mzc和男家丁的游戏】 题解
题目链接:https://www.luogu.org/problemnew/show/P2298 对于迷宫问题,bfs是比较好的选择. 直接bfs模板 #include <iostream> ...
- 洛谷 P2298 【Mzc和男家丁的游戏 】
这道题还是挺水的,广搜模板题,注意一下细节就是了. :码代上上代码: #include <bits/stdc++.h> using namespace std; int n , m , s ...
- 洛谷 P2299 Mzc和体委的争夺战
洛谷 P2299 Mzc和体委的争夺战 题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙), ...
- 洛谷P2299 Mzc和体委的争夺战 题解
题目 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气,决定与其决斗,但cat的体 ...
- 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解
[洛谷P2584][ZJOI2006]GameZ游戏排名系统题解 题目链接 题意: GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在 ...
- 洛谷——P2126 Mzc家中的男家丁
P2126 Mzc家中的男家丁 题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道 ...
- 洛谷 P2126 Mzc家中的男家丁
题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道了).现在知道mzc与男家丁们互 ...
随机推荐
- 2019的hdu暑假作业(欢迎纠错)
1219 遍历计数. #include<bits/stdc++.h> #define QAQ 0 using namespace std; ]; ]; int main(){ )){ me ...
- docker资源汇总
https://github.com/hangyan/docker-resources/blob/master/README_zh.md https://github.com/lightning- ...
- HTML5 Canvas奇幻色彩Loading加载动画
转自 https://www.html5tricks.com/tag/loading%E5%8A%A8%E7%94%BB/
- virtualenvwrapper.sh报错: There was a problem running the initialization hooks.解决
由于在ubuntu环境下,将python做与python3.6做了软链接(ln -s python python3.6),并且pip也被我做了软链接,所以导致用pip安装virtualenvwrapp ...
- 编译openwrt_MT7688_hiwooya
参考链接: 无涯论坛地址: http://www.hi-wooya.com/forum.php openwrt官网地址:https://openwrt.org/zh-cn/doc/howto/buil ...
- JavaWeb项目中集成Swagger API文档
1.增加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-sw ...
- 如何用纯 CSS 创作阶梯文字特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXYBEM 可交互视频教 ...
- shell-code-4-运算符
#1. shell 基本运算符有:算数.关系.布尔.字符串.文件测试运算符#2. 原生bash不支持简单的数学运算,可使用awk和expr(最常用)echo `expr 1 + 2`# 反引号:表达式 ...
- JavaScript正则表达式-定义
通过RegExp()构造函数创建RegExp对象来定义正则表达式. var reg_pattern = new RegExt("a\d"); 通过字面语法直接定义正则表达式. va ...
- Spring,Mybatis,Springmvc框架整合项目(第一部分)
一.说在前面的话 本篇博文实现一个注册登录小项目,使用spring,mybatis,springmvc框架进行整合,我们创建的是一个maven工程,主要是方便jar包版本的管理.项目使用eclispe ...