首页 > 其他分享 >D-走一个大整数迷宫(牛客月赛97)

D-走一个大整数迷宫(牛客月赛97)

时间:2024-07-12 21:25:49浏览次数:15  
标签:tx ty int 迷宫 tp pru 牛客 dp 97

题意:给两个n行m列的矩阵a和b,计数器,只有当计数器的值模(p-1)时出口才打开,要从左上走到右下,求最快多久走出迷宫。

分析:无论2的bij次方有多大p的2的bij次方的次方取模(p-1)都为1,所以cij=aij。用bfs搜索最短路径

代码:

#include<bits/stdc++.h>
using namespace std;
struct A{
    int x,y,pp;
};
int dx[4]{-1,1,0,0},dy[4]={0,0,-1,1};
int main(){
    int n,m,p;cin>>n>>m>>p;p--;
    int a[n+10][m+10],b[n+10][m+10];
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>b[i][j];
        }
    }
    int dp[15][15][10100],vis[15][15][10100];
    vis[1][1][a[1][1]%p]=1;
    dp[1][1][a[1][1]%p]=0;
    queue<A>pru;
    pru.push({1,1,a[1][1]%p});
    while(!pru.empty()){
        auto u=pru.front();
        pru.pop();
        for(int i=0;i<=3;i++){
            int tx=u.x+dx[i],ty=u.y+dy[i],tp=(u.pp+a[tx][ty])%p;
            if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!vis[tx][ty][tp]){
                vis[tx][ty][tp]=1;
                dp[tx][ty][tp]=dp[u.x][u.y][u.pp]+1;
                pru.push({tx,ty,tp});
            }
        }
    }
    if(!vis[n][m][0])cout<<"-1"<<endl;
    else cout<<dp[n][m][0]<<endl;
    
    return 0;
}

标签:tx,ty,int,迷宫,tp,pru,牛客,dp,97
From: https://blog.csdn.net/m0_74310050/article/details/140337555

相关文章

  • LeetCode 2974. 最小数字游戏(排序)
    题目:2974.最小数字游戏思路:排序后,两个两个取出来进行操作即可classSolution{public:vector<int>numberGame(vector<int>&nums){sort(nums.begin(),nums.end());vector<int>v;for(inti=1;i<nums.size();i+=2){v.pu......
  • 精选力扣,牛客链表面试题
    ......
  • hnust 1497: 中国象棋中的跳马问题
    hnust1497:中国象棋中的跳马问题题目描述现在棋盘的大小不一定,由p,q给出,并且在棋盘中将出现障碍物(限制马的行动,与象棋走法相同)输入第一行输入n表示有n组测试数据。每组测试数据第一行输入2个整数p,q,表示棋盘的大小(1<=p,q<=100)。每组测试数据第二行输入4个整数,表示......
  • 西门子总线插头6ES7972-0BB41-0XA0
    功率单元是使用功率电力电子器件进行整流、滤波、逆变的高压变频器部件。功率单元是构成高压变频器主回路的主要部分。功率单元上主要电力电子器件简介1)整流桥其作用是整流(将交流变成直流)。整流桥内部封装形式有以下两种,封装内部有6只整流二管,用在功率单元的三相输入端;封......
  • 题解 - 幻象迷宫
    题目in洛谷或题目inCF题目幻象迷宫可以认为是无限大的,不过它由若干个\(N\timesM\)的矩阵重复组成。矩阵中有的地方是道路,用\(\verb!.!\)表示;有的地方是墙,用\(\verb!#!\)表示。起始位置用\(\verb!S!\)表示。也就是对于迷宫中的一个点\((x,y)\),如果\((x\bmodn,y......
  • 牛客周赛 Round50 E-小红的树上移动 (期望dp+逆元)
    E-小红的树上移动题目:题意:在一个树上从根节点移动,每次都会向更深的下一层走,如果此时已经是叶子节点没有下一层就会停留在这里。求出移动次数的期望,移动次数就是从根节点1开始到此节点的深度。思路:画一个草图不难看出其实在同一层中,到达每个点的概率是一样的。并且,对于每一层......
  • LeetCode 974. 和可被 K 整除的子数组
    974.和可被K整除的子数组给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。子数组 是数组中 连续 的部分。示例1:输入:nums=[4,5,0,-2,-3,1],k=5输出:7解释:有7个子数组满足其元素之和可被k=5整除:[4,5,0......
  • 牛客周赛 Round 50 D[小红的因式分解] 超级无敌大暴力
    牛客周赛Round50D小红的因式分解超级无敌大暴力首先拿到这个题,真的是一头雾水,本蒟蒻今天才想出来。。。首先拆开式子,我们可以得到a1a2==a;a1b2+a2b1==b;b1b2==c;那么,我们只需要求解一对a1与b1即可得到本题答案,因为剩下的一对a2b2由a/a1和b/b1得到所以我们可以运用......
  • 牛客周赛 Round 50
    这场还是差点 A.小红的最小最大题意:min(a,b)+x是不是比max(a,b)如果比它大输出YES否则输出NOCode:#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);inta,b,x;cin>>......
  • 牛客练习赛127
    A、小红的最大价值无聊打一下代码实现#include<bits/stdc++.h>#ifdefLOCAL#include"algo/debug.h"#else#definedebug(...)42#endifintmain(){std::cin.tie(nullptr)->sync_with_stdio(false);#defineintlonglongintn,k;std::c......