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

news2024/10/6 2:28:29

链接:登录—专业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.coloradmin.cn/o/1875386.html

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

相关文章

Linux基础 - Samba 或 NFS 实现文件共享

目录 零. 简介 一. Samba 二. NFS 三. 总结 零. 简介 在 Linux 系统中&#xff0c;Samba 和 NFS 是两种常见的用于实现文件共享的方式&#xff0c;它们各有特点。 Samba 主要用于在 Linux 和 Windows 系统之间实现文件和打印机共享。它基于 SMB&#xff08;Server Message…

[Leetcode刷题] - 栅栏涂漆DP类问题

题目描述 这一类题目通常会问给定一组房子n和一组染料k去涂漆&#xff0c;并且会加入限制条件比如&#xff1a;某种颜色只能使用1次&#xff0c;相相邻房子不能涂同一种颜色&#xff0c;或者最多不能超过连续3个房子涂想通过颜色等等&#xff0c;让我们列举所有可能性总和&…

企智汇PaaS平台:数字化时代下的项目管理利器

企智汇项目管理系统PaaS平台是一个强大而灵活的平台&#xff0c;旨在为企业提供高效、智能的项目管理解决方案。在项目管理领域提供了显著的优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; 1.快速部署与迭代&#xff1a;企智汇一体化PaaS平台提供了预配置的基础…

代理IP如何助力旅游信息聚合?

在数字化时代&#xff0c;旅游信息聚合对于提升服务质量、优化用户体验起着至关重要的作用。随着在线旅游预订的普及&#xff0c;旅游信息的采集、整合和呈现成为了一个复杂而关键的过程。在这个过程中&#xff0c;代理IP技术以其独特的优势&#xff0c;为旅游信息聚合提供了强…

STM32介绍和资料地址

STM32标准外设软件库 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 支持标准外设库的产品系列&#xff1a;

ROS2开发机器人移动

.创建功能包和节点 这里我们设计两个节点 example_interfaces_robot_01&#xff0c;机器人节点&#xff0c;对外提供控制机器人移动服务并发布机器人的状态。 example_interfaces_control_01&#xff0c;控制节点&#xff0c;发送机器人移动请求&#xff0c;订阅机器人状态话题…

【升压电子烟方案】DC-DC电源升压恒压芯片FP6277+全极低功耗霍尔MH251在电子烟中的应用

电子烟是一种新型烟草制品&#xff0c;由于其健康、环保和口感多样化的特点&#xff0c;逐渐受到了消费者的青睐。 升压芯片作为电子烟的核心组件之一&#xff0c;主要作用是将输入的电压升高至合适的工作电压&#xff0c;霍尔传感器控制电子烟的使用状态&#xff0c;以确保电子…

【笔记】Spring Cloud Gateway 实现 gRPC 代理

Spring Cloud Gateway 在 3.1.x 版本中增加了针对 gRPC 的网关代理功能支持,本片文章描述一下如何实现相关支持.本文主要基于 Spring Cloud Gateway 的 官方文档 进行一个实践练习。有兴趣的可以翻看官方文档。 由于 Grpc 是基于 HTTP2 协议进行传输的&#xff0c;因此 Srping …

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!!

已解决java.security.acl.LastOwnerException&#xff1a;无法移除最后一个所有者的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查当前所有者数量 2. 添加新的所有者 3. 维…

【Python系列】Python 中循环依赖问题及其解决方案

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

CAN和CANFD数据写入.asc文件的dll

因为工作需要&#xff0c;需要做一些硬件不是CANoe的上位机&#xff08;比如说周立功CAN,NI-CAN&#xff09;&#xff0c;上位机需要有记录数据的功能&#xff0c;所以用Qt制作了一个记录数据的dll&#xff0c;方便重复使用&#xff08;因为有的客户指定了编程软件&#xff0c;…

Spring框架整体概念

Spring框架基础概念 首先&#xff0c; 从Spring框架的整体架构和组成对整体框架有个认知。 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图&#xff0c;目前我们使用最广法的版本应该都是5.x&#xff0c;5版本移除了Web模块中的Portlet子模块&#xff0c;新…

机器人控制系列教程之控制理论概述

经典控制理论 经典控制理论主要研究线性定常系统。所谓线性控制系统是指系统中各组成环节或元件的状态由线性微分方程描述的控制系统。如果描述该线性系统的微分方程系数是常数,则称为线性定常系统。描述自动控制系统输入量、输出量和内部量之间关系的数学表达式称为系统的数学…

STM32第七课:KQM6600空气质量传感器

文章目录 需求一、KQM6600模块及接线方法二、模块配置流程1.环境2.配置时钟和IO3.配置串口初始化&#xff0c;使能以及中断4.中断函数 三、数据处理四、关键代码总结 需求 能够在串口实时显示当前的VOC&#xff08;挥发性有机化合物&#xff09;&#xff0c;甲醛和Co2浓度。 …

GPU算力是什么,哪些行业需要用到GPU算力?

近两年&#xff0c;计算能力已成为推动各行各业发展的关键因素。而GPU&#xff08;图形处理器&#xff09;算力&#xff0c;作为现代计算技术的重要分支&#xff0c;正逐渐在多个领域展现出其强大的潜力和价值。尚云将简要介绍GPU算力的定义和基本原理&#xff0c;并探讨其在哪…

使用Apache POI库在Java中导出Excel文件的详细步骤

使用Apache POI库在Java中导出Excel文件的详细步骤 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技…

企业中对RAG的优化方案

企业中对RAG的优化方案 RAG优化&#xff1a;检索、语义和生成方面的提升RAG流程一、数据处理优化数据清洗实际案例 二、检索方面优化向量库检索倒排索引数据库检索 三、生成方面优化调整Prompt 四、架构优化RAGAgent架构Self-RAG架构Agentic RAG架构 总结 RAG优化&#xff1a;检…

【Django】网上蛋糕项目商城-热销和新品

概念 本文将完成实现项目的热销和新品两个分类的商品列表进行分页展示。 热销和新品功能实现步骤 在head.html头部页面中点击这两个超链接向服务器发送请求。 在urls.py文件中定义该请求地址 path(goodsrecommend_list/,views.goodsrecommend_list) 在views.py文件中定义g…

mac配置hdc

首先需要找到 .zshrc 文件&#xff1a; 访达进入到user文件夹中&#xff0c;shiftcommand.键显示隐藏文件&#xff1a; 双击打开进行编辑&#xff0c;在最后添加 //HDC_HOME 指的是hdc的绝对路径&#xff0c;要替换成自己的路径 export HDC_HOME/Users/你的名字/Library/Huaw…

系统架构设计师 - 计算机网络(1)

计算机网络 计算机网络TCP/IP 协议簇TCP与UDP ★★★DHCP与DNS ★★★DNS 协议应用DHCP 协议应用 网络规划与设计逻辑设计与物理设计 ★★★★逻辑网络设计物理网路设计 层次化网络设计网络冗余设计 网络存储 ★★网络存储方式磁盘阵列 - Raid 大家好呀&#xff01;我是小笙&am…