牛客小白月赛97:D走一个大整数迷宫

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

给一个 n×mn\times mn×m 矩阵迷宫, 第 iii 行第 jjj 列的值为 ci,jc_{i,j}ci,j​ ,LHLHLH 在迷宫中迷路了,他需要你的帮助。

LHLHLH 当前在 (1,1)(1,1)(1,1) 的位置,出口在 (n,m)(n,m)(n,m),这个迷宫有一个计数器,只有当计数器的值模 (p−1)(p-1)(p−1) 的余数为 000 时迷宫出口才会开门(出口没有开门意味着即使在 (n,m)(n,m)(n,m) 的位置也不能逃出去)。

LHLHLH 每一秒会向迷宫的上下左右四个方向走一步(不可以不走),并且不能走出迷宫的边界,假设 LHLHLH 从 (i,j)(i,j)(i,j) 走到了 (i′,j′)(i',j')(i′,j′),然后计数器将会加上 ci′,j′c_{i',j'}ci′,j′​。

特别的,计数器初始是 c1,1c_{1,1}c1,1​。

ci,j=ai,j×p2bi,jc_{i,j}=a_{i,j}\times p^{2^{b_{i,j}}}ci,j​=ai,j​×p2bi,j​。

现在 LHLHLH 问你,他最快需要多久才可以走出迷宫。

输入描述:

第一行输出三个整数 n,m,p(1≤n,m≤10,2≤p≤104)n,m,p(1\le n,m\le 10,2\le p\le 10^4)n,m,p(1≤n,m≤10,2≤p≤104)。接下来输入一个 nnn 行 mmm 列的矩阵 ai,ja_{i,j}ai,j​。接下来输入一个 nnn 行 mmm 列的矩阵 bi,jb_{i,j}bi,j​。0≤ai,bi≤1060\le a_i,b_i\le 10^60≤ai​,bi​≤106。

输出描述:

输出一个整数,表示满足条件的最短路径长度。假如不存在一条路径满足条件,输出 −1-1−1。

示例1

输入

复制3 3 10 1 2 3 0 1 4 0 0 0 1 0 0 0 0 1 0 1 0

3 3 10
1 2 3
0 1 4
0 0 0
1 0 0
0 0 1
0 1 0

输出

复制6

6

备注:

C=[1002030010400000]C=\begin{bmatrix}100 &20  &30 \\0& 10 & 400\\0& 0 &0
\end{bmatrix}C=⎣⎡​10000​20100​304000​⎦⎤​。第一秒,从 (1,1)(1,1)(1,1) 走到 (1,2)(1,2)(1,2),计数器的值为 120120120。第二秒,从 (1,2)(1,2)(1,2) 走到 (1,3)(1,3)(1,3),计数器的值为 150150150。第三秒,从 (1,3)(1,3)(1,3) 走到 (1,2)(1,2)(1,2),计数器的值为 170170170。第四秒,从 (1,2)(1,2)(1,2) 走到 (2,2)(2,2)(2,2),计数器的值为 180180180。第五秒,从 (2,2)(2,2)(2,2) 走到 (3,2)(3,2)(3,2),计数器的值为 180180180。第六秒,从 (3,2)(3,2)(3,2) 走到 (3,3)(3,3)(3,3),计数器的值为 180180180,是 999 的倍数,逃出迷宫。

img

做法

bfs+dp。赛时想不到怎么弄,因为它可以走重复的格子,vis[i][j]不能用了限制循环次数。也没想到Cij的值直接可以化为Aij。我们可以加多一维来表示余数,即dp[i][j][k]表示走到第i行j列且余数为k的最短路。用vis[i][j][k]来限制循环次数,因为之前已经求出最短路了,再次经过该点不可能比之前再短了,所以直接跳过。

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,p;
int a[20][20],b[20][20];
int dp[20][20][10010];
int vis[20][20][10010];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
struct ty{int x,y,res;  
};
queue<ty> q;
void bfs(){memset(dp,sizeof(dp),0x3f);q.push({1,1,a[1][1]%p});vis[1][1][a[1][1]%p]=1;dp[1][1][a[1][1]%p]=0;while(!q.empty()){ty tmp=q.front();q.pop();for(int i=0;i<4;i++){int x=tmp.x+dx[i];int y=tmp.y+dy[i];if(x>n||x<=0||y>m||y<=0) continue;if(vis[x][y][(tmp.res+a[x][y])%p]) continue;dp[x][y][(tmp.res+a[x][y])%p]=dp[tmp.x][tmp.y][tmp.res]+1;vis[x][y][(tmp.res+a[x][y])%p]=1;q.push({x,y,(tmp.res+a[x][y])%p});}}if(dp[n][m][0]!=0x3f3f3f3f) cout<<dp[n][m][0];else cout<<-1;
}
int main(){cin>>n>>m;scanf("%d",&p);p--;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&b[i][j]);}}bfs();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

E: 无法定位软件包 libmariadbclient-dev

如果在 Ubuntu 上无法找到 libmariadbclient-dev 或 libmariadb-client-lgpl-dev 包&#xff0c;可能是因为你的软件源没有正确配置或者名称略有不同。你可以按照以下步骤检查和解决问题&#xff1a; 更新软件包列表&#xff1a; 在执行安装命令之前&#xff0c;首先确保你的软…

全面指南:训练AudioLM音频生成模型的步骤与策略

1. 理解AudioLM模型 首先&#xff0c;需要对AudioLM模型有一个基本的理解&#xff0c;包括其架构、用途和优势。 2. 数据收集与预处理 收集高质量的音频数据是训练成功的第一步。预处理包括去噪、归一化、分割等步骤&#xff0c;以确保数据适合模型训练。 3. 特征提取 根据…

Ubuntu 20.04.4 LTS 离线安装docker 与docker-compose

Ubuntu 20.04.4 LTS 离线安装docker 与docker-compose 要在Ubuntu 20.04.4 LTS上离线安装Docker和Docker Compose&#xff0c;你需要首先从有网络的环境下载Docker和Docker Compose的安装包&#xff0c;然后将它们传输到离线的服务器上进行安装。 在有网络的环境中&#xff1a…

百日筑基第五天-关于maven

百日筑基第五天-关于maven Maven 是什么 Maven 是一个项目管理工具&#xff0c;它包含了一个项目对象模型&#xff08;Project Object Model&#xff09;&#xff0c;反映在配置中&#xff0c;就是一个 pom.xml 文件。是一组标准集合&#xff0c;一个项目的生命周期、一个依赖…

加固三防平板如何提高轨道交通系统的运营效率?

在当今快节奏的社会中&#xff0c;轨道交通系统作为城市交通的重要组成部分&#xff0c;其运营效率的提升对于缓解交通拥堵、满足人们的出行需求以及促进城市的发展具有至关重要的意义。而加固三防平板作为一种先进的技术设备&#xff0c;正逐渐在轨道交通领域发挥着关键作用&a…

【Vue pnpm install报错问题】

出现问题&#xff1a; pnpm install命令下安装依赖发现的错误&#xff1a; npm ERR! code ENOENTnpm ERR! syscall spawn gitnpm ERR! path gitnpm ERR! errno -4058npm ERR! enoent Error while executing:npm ERR! enoent undefined ls-remote -h -t ssh://gitgithub.com/s…

机器人控制系列教程之Simulink中模型搭建(1)

机器人模型获取 接上期&#xff1a;机器人控制系列教程之控制理论概述&#xff0c;文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf)&#xff0c;MATLAB将自动打开Simulink以…

《数据结构与算法基础 by王卓老师》学习笔记——1.4算法与算法分析

一、算法 1.1算法的研究内容 1.2算法的定义 1.3算法的描述 以下是算法的自然语言描述 以下是算法的传统流程图表示 以下是NS流程图表示 1.4算法和程序的区别与联系 1.5算法的五个特性 1.6算法设计的要求 Robustness也称为鲁棒性 二、算法分析 2.1算法时间效率的度量 2.1.1事…

JavaParser抽取测试用例对应的被测方法

背景介绍 博主目前要做的工作需要将一个java项目的所有RD手写的测试用例和被测方法对应起来&#xff0c;最后将得到的结果存入一个json文件。 本教程以项目GitHub - binance/binance-connector-java 为例。 结果展示 最终会得到一个 funcTestMap.json&#xff0c;里面存放着…

【Android面试八股文】Android组件内核面试题:Intent显示跳转与隐式跳转,如何使用?

文章目录 1.显示意图与隐式意图的区别,说说你的简单理解?1.1 显式意图(Explicit Intent)1.2 隐式意图1.3 显式意图和隐式意图的应用场景2.你在工作中,留意过在Android中Intent显示跳转和隐式跳转,如何使用?2.1 显式 Intent 调用2.2 Intent隐式跳转 Action2.3 Intent隐式…

快速清理Word中的嵌套表格

实例需求&#xff1a;Word文档中表格有的单元格中包含嵌套表格&#xff08;注意其中表格中有合并单元格&#xff09;&#xff0c;如下图所示。 现在需要删除单元格顶部的嵌套表格&#xff08;如上图中的表格1和表格3&#xff09;&#xff0c;如下图所示&#xff0c;如果表格较多…

整合Spring Boot和Apache Solr进行全文搜索

整合Spring Boot和Apache Solr进行全文搜索 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用开发中&#xff0c;全文搜索是许多应用不可或缺的功能之…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 数字排列游戏(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

Elasticsearch-Rest-Client

Elasticsearch-Rest-Client&#xff1a;官方RestClient&#xff0c;封装了ES操作&#xff0c;API层次分明&#xff0c;上手简单。 1. 导入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high…

14-6 小型语言模型在商业应用中的使用指南

人工智能 (AI) 在商业领域的发展使众多工具和技术成为人们关注的焦点&#xff0c;其中之一就是语言模型。这些大小和复杂程度各异的模型为增强业务运营、客户互动和内容生成开辟了新途径。本指南重点介绍小型语言模型、它们的优势、实际用例以及企业如何有效利用它们。 基础知识…

Windows 系统 Solr 8.11.3 安装详细教程(最新)

Windows 系统 Solr 8.11.3 安装详细教程 说明什么是Solr下载与解压如何启动启动命令&#xff1a;浏览器中打开dashboard其他命令查看关闭命令 说明 本次只是简单安装&#xff0c;为了在项目中使用&#xff0c;如果在公开服务器中安装需要更改开放端口&#xff0c;配置权限等。 …

Python28-1 机器学习算法之决策树

决策树&#xff08;Decision Tree&#xff09; 决策树算法是一种常用的机器学习算法&#xff0c;属于监督学习范畴。它可以用于分类和回归任务&#xff0c;具有易于理解和解释的特点。决策树通过递归将数据分割成更小的子集&#xff0c;构建一个树形结构&#xff0c;其中每个节…

visionOS 2 Beta 2的操作系统更新的介绍

应用位置调整:应用可以移动到CompatibleApps文件夹外,提供更灵活的界面布局,提升用户个性化体验。 全屏视频倾斜:全屏视频在倾斜时可以重新定位,提供更好的观看视角,增强舒适度和沉浸感。 环境卸载:长按可卸载HomeView中的环境,优化系统资源管理,提高设备运行效率。 增…

iOS开发中用到的自定义UI库

文章目录 前言cell 左右滑动菜单日历组件仿QQ 侧滑抽屉仿探探、陌陌的卡牌滑动库头部缩放视图自定义UITabbar刮刮乐广告横幅 前言 本文中的UI组件&#xff0c;是作者在移动应用开发中都用到过的。 确实&#xff0c;找到对的三方库可以快速帮助我们构建App, 极大程度上提高了生…

Websocket在Java中的实践——最小可行案例

大纲 最小可行案例依赖开启Websocket&#xff0c;绑定路由逻辑类 测试参考资料 WebSocket是一种先进的网络通信协议&#xff0c;它允许在单个TCP连接上进行全双工通信&#xff0c;即数据可以在同一时间双向流动。WebSocket由IETF标准化为RFC 6455&#xff0c;并且已被W3C定义为…