2023蓝桥杯省模拟赛——滑行

这篇具有很好参考价值的文章主要介绍了2023蓝桥杯省模拟赛——滑行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

小蓝准备在一个空旷的场地里面滑行,这个场地的高度不一,小蓝用一个 n 行 m 列的矩阵来表示场地,矩阵中的数值表示场地的高度。

如果小蓝在某个位置,而他上、下、左、右中有一个位置的高度(严格)低于当前的高度,小蓝就可以滑过去,滑动距离为 1 。

如果小蓝在某个位置,而他上、下、左、右中所有位置的高度都大于等于当前的高度,小蓝的滑行就结束了。

小蓝不能滑出矩阵所表示的场地。

小蓝可以任意选择一个位置开始滑行,请问小蓝最多能滑行多远距离。

输入格式

输入第一行包含两个整数 n, m,用一个空格分隔。

接下来 n 行,每行包含 m 个整数,相邻整数之间用一个空格分隔,依次表示每个位置的高度。

输出格式

输出一行包含一个整数,表示答案。

样例输入

4 5
1 4 6 3 1 
11 8 7 3 1 
9 4 5 2 1 
1 3 2 2 1

样例输出

7

样例说明

滑行的位置一次为 (2, 1), (2, 2), (2, 3), (3, 3), (3, 2), (4, 2), (4, 3)(2,1),(2,2),(2,3),(3,3),(3,2),(4,2),(4,3)。

评测用例规模与约定

对于 30% 评测用例,1 <= n <= 20,1 <= m <= 20,0 <= 高度 <= 100。

对于所有评测用例,1 <= n <= 100,1 <= m <= 100,0 <= 高度 <= 10000。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

问题分析

显然这是一道DFS+记忆化数组优化问题。需要注意的是:从样例说明中可以看出,起点位置也是算在滑行距离里面的,即不存在滑行距离为0的位置。因此,默认d=1。文章来源地址https://www.toymoban.com/news/detail-406906.html

n,m=map(int,input().split())  # 行数,列数
a=[list(map(int,input().split())) for _ in range(n)]  # 场地
dp=[[-1 for _ in range(m)] for _ in range(n)]  # 记忆化数组

# 当前位置所能到达的最远距离
def dfs(x,y):
    if dp[x][y]>-1:
        return dp[x][y]
    d=1  # 若已动弹不得,默认距离是1
    for dx,dy in [(1,0),(0,-1),(-1,0),(0,1)]:
        nx=x+dx
        ny=y+dy
        if 0<=nx<n and 0<=ny<m and a[nx][ny]<a[x][y]:  # 可以滑行
            d=max(dfs(nx,ny)+1,d)  # 滑还是不滑
    # 此时已经从(x,y)走到头
    dp[x][y]=d
    return d

ans=0
for i in range(n):
    for j in range(m):
        ans=max(dfs(i,j),ans)

print(ans)

到了这里,关于2023蓝桥杯省模拟赛——滑行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十五届蓝桥杯模拟赛(第一期)Python

    创作不易,欢迎小伙伴们关注、点赞+收藏! 问题描述 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本

    2024年02月05日
    浏览(34)
  • 第十五届蓝桥杯模拟赛(第一期 C++)

    问题描述 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。请将这个数的十进制形式作为答案提交。    答案: 2730 思路分析: 直接暴力秒了 问题描述 在 Excel 中,列的名称使用英文字母的组合。前 26 列用一个字母

    2024年02月05日
    浏览(26)
  • 第十五届蓝桥杯模拟赛(第二期)JAVA

    (做的时候忘记小题截图了,没有题目,个人答案,可能会有问题) 1. 108 2.608 3.4169 4.901440 5.541(有问题,看错题目了) 6. 问题描述 给定一个正好六位的正整数 x,请将 x 循环左移一位后输出。 所谓循环左移一位,是指将原来的十万位变为个位,原来的万位到个位向左移动依

    2024年02月04日
    浏览(30)
  • 第十五届蓝桥杯 模拟赛第二期java组题解

    一、 问题描述 小蓝要在屏幕上放置一行文字,每个字的宽度相同。 小蓝发现,如果每个字的宽为 36 像素,一行正好放下 30 个字,字符之间和前后都没 有任何空隙。 请问,如果每个字宽为 10 像素,字符之间不包含空隙,一行可以放下多少个字? 答案提交 这是一道结果填空

    2024年02月03日
    浏览(27)
  • 第十四届蓝桥杯模拟赛(第一期)——C语言版

    问题描述 十进制整数 2 在十进制中是 1 位数,在二进制中对应 10 ,是 2 位数。 十进制整数 22 在十进制中是 2 位数,在二进制中对应 10110 ,是 5 位数。 请问十进制整数 2022 在二进制中是几位数? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果

    2023年04月09日
    浏览(32)
  • 第十五届蓝桥杯模拟赛B组(第二期)C++

    前言: 第一次做蓝桥模拟赛的博客记录,可能有很多不足的地方,现在将第十五届蓝桥杯模拟赛B组(第二期)的题目与代码与大家进行分享,我是用C++做的,有好几道算法题当时自己做的也是一脸懵,所以有好个别几道也是请教了其他大佬才分享出来的。 目录 ​编辑 一、

    2024年02月05日
    浏览(28)
  • 第十五届蓝桥杯模拟赛(第二期)第5题(Python)

    最难的才有挑战性,才值得学习! 小蓝有一个01矩阵。他打算将第一行第一列的 0 变为 2 。变化过程有传染性,每次 2 的上下左右四个相邻的位置中的 0 都会变成 2 。直到最后每个 2 的周围都是 1 或 2 结束。 请问,最终矩阵中有多少个 2 ? 以下是小蓝的矩阵,共 30 行 40 列。

    2024年02月04日
    浏览(25)
  • 蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

    这里把我的想法和思路写出来,恳请批评指正! 目录 考前准备 试题1: 试题2: 试题3: 试题4: 试题5: 试题6: 试题7: 试题8: 试题9: 试题10: 总结: 考前五分钟,开十个源文件,并把头文件等必须写的部分写出来,写完的程序一定要有顺序地保留 问题描述 请找到一个

    2024年02月02日
    浏览(40)
  • 第十四届蓝桥杯单片机第二场模拟赛程序

    第十四届蓝桥杯单片机第二场模拟赛程序(少量bug) 题目来源于4T评测网 www.4t.wiki 使用大赛组委会提供的国信长天单片机竞赛实训平台,完成本试题的程序设计与调试。程序编写、调试完成后,选手需通过考试系统提交以准考证号命名的hex文件。不符合以上文件提交要求的作

    2023年04月14日
    浏览(33)
  • 【蓝桥杯Web】第十五届蓝桥杯(Web 应用开发)模拟赛 2 期 | 全部题解

    感觉蓝桥杯的模拟赛一次比一次难了😑 制作不易,代码都是纯手敲,觉得有帮助的伙伴们记得点个赞评论一下,谢谢大家支持😍 话不多说直接上答案 目录 1、想不相等 2、三行情书 3、电影院在线订票 4、老虎机 5、星际通讯 6、蓝桥杯排位赛 7、拼出一个未来 8、超能英雄联

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包