小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11×1 的面积,小明要占用 5×55×5 的面积。

由于小明太胖了,所以他行动起来很不方便。

当玩一些游戏时,小明相比小伙伴就吃亏很多。

小明的朋友们制定了一个计划,帮助小明减肥。

计划的主要内容是带小明玩一些游戏,让小明在游戏中运动消耗脂肪。

走迷宫是计划中的重要环节。

朋友们设计了一个迷宫,迷宫可以看成是一个由 n×nn×n 个方阵组成的方阵,正常人每次占用方阵中 1×11×1 的区域,而小明要占用 5×55×5 的区域。

小明的位置定义为小明最正中的一个方格。

迷宫四周都有障碍物。

为了方便小明,朋友们把迷宫的起点设置在了第 33 行第 33 列,终点设置在了第 n−2n−2 行第 n−2n−2 列。

小明在时刻 00 出发,每单位时间可以向当前位置的上、下、左、右移动单位 11 的距离,也可以停留在原地不动。

小明走迷宫走得很辛苦,如果他在迷宫里面待的时间很长,则由于消耗了很多脂肪,他会在时刻 kk 变成一个胖子,只占用 3×33×3 的区域。

如果待的时间更长,他会在时刻 2k2k 变成一个正常人,只占用 1×11×1 的区域。

注意,当小明变瘦时迷宫的起点和终点不变。

请问,小明最少多长时间能走到迷宫的终点。

注意,小明走到终点时可能变瘦了也可能没有变瘦

输入格式

输入的第一行包含两个整数 n,kn,k。

接下来 nn 行,每行一个由 nn 个字符组成的字符串,字符为 + 表示为空地,字符为 * 表示为阻碍物。

输出格式

输出一个整数,表示答案

数据范围

1≤n≤3001≤n≤300,
1≤k≤1000

输入样例

9 5
+++++++++
+++++++++
+++++++++
+++++++++
+++++++++
***+*****
+++++++++
+++++++++
+++++++++

输出样例 16;

思路 代码主题与一般类型的bfs算法一致但是判定该函数是否合法时要额外增加判断条件判断当前路径是否合法

int check(int x,int y,int t){f=0;if(b[x][y]==1)return 0;if(t<k)f=2;else if(t>=k&&t<2*k)f=1;
else    if(t>=2*k)f=0;if(x+f>n||x-f<1||y-f<1||y+f>n)return 0;for(int i=x-f;i<=x+f;i++){for(int j=y-f;j<=y+f;j++){if(g[i][j]=='*')return 0;}}return 1;
}

总代码如下

#include<bits/stdc++.h>
using namespace std;
int dx[4]={-1,0,1,0};
int dy[4]={0,-1,0,1};
const int r=1010;
struct p{int x;int y;int t;
}q[r*r];
char  g[r][r];int b[r][r],n,m,k,f;
int check(int x,int y,int t){f=0;if(b[x][y]==1)return 0;if(t<k)f=2;else if(t>=k&&t<2*k)f=1;
else    if(t>=2*k)f=0;if(x+f>n||x-f<1||y-f<1||y+f>n)return 0;for(int i=x-f;i<=x+f;i++){for(int j=y-f;j<=y+f;j++){if(g[i][j]=='*')return 0;}}return 1;
}
int  bfs(){queue<p>q;q.push({3,3,0});b[3][3]=1;while(q.size()){p tt=q.front();q.pop();if(tt.t<2*k)q.push({tt.x,tt.y,tt.t+1});for(int i=0;i<4;i++){int tx=dx[i]+tt.x;int ty=dy[i]+tt.y;if(check(tx,ty,tt.t)){if(tx==n-2&&ty==n-2)return tt.t+1;b[tx][ty]=1;q.push({tx,ty,tt.t+1});}}}return -1;
}int main(){cin>>n>>k;
for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)cin>>g[i][j];
}
int c=bfs();
printf("%d",c);
}

大胖子走迷宫(蓝桥杯真题)相关推荐

  1. 2019年第十一届蓝桥杯国赛JavaB组第H题——“大胖子走迷宫”题目及解析

    测试样例 Input: 9 5 +++++++++ +++++++++ +++++++++ +++++++++ +++++++++ ***+***** +++++++++ +++++++++ ++++ ...

  2. Java B组蓝桥杯第十届国赛:大胖子走迷宫

    试题 H: 大胖子走迷宫 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积, 小明要占用 5 ...

  3. 蓝桥杯国赛-大胖子走迷宫

    广度优先搜索,见注释 五个状态:上下左右停 题目提交 import java.util.ArrayDeque; import java.util.Queue; import java.util.Sca ...

  4. 蓝桥杯_大胖子走迷宫

    题目描述 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11×1 的面积,小明要占用 5×55×5 的面积. 由于小明太胖了,所以他行动起来很不方便.当玩一些游戏时,小明相比小伙伴就吃亏很 ...

  5. 刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java)

    刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java) https://www.lanqiao.cn/problems/234/learning/ http://lx.lanqia ...

  6. 第五届蓝桥杯真题解析【JavaC组】

    第五届蓝桥杯真题解析[JavaC组] 业精于勤,荒于嬉:行成于思,毁于随.--韩愈 文章目录 ***第五届蓝桥杯真题解析[JavaC组]*** 前言 A:猜年龄 B:等额本金 C:猜字母 D:大衍数列 ...

  7. 蓝桥杯真题2017-2021

    刷完近几年真题,感觉理解完之后,拿奖问题不大,本人这次获得2022年蓝桥杯javaB组省一,以下是历年javaB组省赛题目. 文章目录 2017年真题 一.购物单 二.纸牌三角形 三.承压计算 四.魔 ...

  8. # 2014年蓝桥杯真题CC++B组

    2014年蓝桥杯真题C/C++B组 1.啤酒和饮料 题目描述 啤酒每罐2.3元,饮料每罐1.9元,小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道她买的啤酒比饮料的数量多,请你计算他买了几罐啤 ...

  9. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  10. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

最新文章

  1. paoding java_中文分词器-PaodingAnalyzer
  2. 9.java.lang.ClassCastException
  3. 火出圈的1688,能扣响C2M的扳机吗?
  4. PPT 下载 | 神策数据朱静芸:电商行业精细化运营四大场景
  5. 关于报错stale element reference: element is not attach
  6. php模块下载,douphp下载中心模块修改版
  7. 如何在ubuntu 14.04系统下开启nfs网络文件系统
  8. asp.net链接mysql数据库------------【个人收集】
  9. XML和HTML的不同点
  10. CDH kafka JMX 启动
  11. python代码斜率_在Python中准确地测量代码执行时间
  12. 虚拟机ping不通主机与外网的解决方法
  13. 中兴获25个5G商用合同
  14. 视频会议、视频聊天、手机视频、跨平台视频如何开发之流程篇
  15. PyQt5 小工具:Excel数据分组汇总器...
  16. 断背山 - 剧情花絮 - 电影 - 风行
  17. TBS1287 1/4 扫 48 通道 LED 背光驱动芯片
  18. Parcel 中文文档 | Parcel 中文网
  19. 我的世界服务器成就系统的其他成就是什么,大量的成就奖励亟待领取!《我的世界》【PC版】Hypixel服务器成就系统来啦~...
  20. 2022-2028全球与中国无线和多室音频市场现状及未来发展趋势

热门文章

  1. 智慧城市不是建设出来的,而是运营出来的
  2. 如何用Python画出玫瑰曲线和蝴蝶曲线
  3. amcharts学习笔记
  4. python怎么加图片_python如何增加背景图片
  5. c语言递推兔子繁殖问题,兔子繁殖问题(斐波那契数列)
  6. 影集制作php源码_最新仿720全景在线制作云平台网站PHP源码
  7. php guzzle,php – 如何使用Guzzle 6记录所有API调用
  8. 11. JS编程之查找元素在数组中的位置
  9. 使用JS将table表格导出为excel
  10. 灰度共生矩阵(GLCM)计算速度快很多,用numpy写的