矩阵最大路径与

题目描述

东九日在学习dp的时候,解决了经典的矩阵最大路径和问题;

他向队友小夨阐述他的感悟,dp要做的就是感受解空间;

为了防止东九日赛上犯病,小夨决定出一道改编版检查东九日的实力。

以上为题目背景;

给定一个 n 行 m 列的矩阵 a,初始的时候,你在矩阵左上角 (1,1) 的位置(即第 1 行第 1 列),你想要通过移动到达矩阵右下角 (n,m)的位置(即第 n 行第 m 列);

若你在位置 (x,y),那么你可以进行以下移动:

①:向左移动到达位置 (x,y−1);

②:向右移动到达位置 (x,y+1);

③:向上移动到达位置 (x−1,y);

④:向下移动到达位置 (x+1,y);

注意:每个位置可以重复到达多次,但 你不可以走出矩阵!

假设你从位置 (1,1) 到达位置(n,m) 经过了这样一条长度为 k 路径(x1,y1)→(x2,y2)→...→(xk−1,yk−1)→(xk,yk),那么这条路径的权值就定义为 ax1,y1 & ax2,y2 &...& axk−1,yk−1 & axk,yk & 表示 "按位与";

请你求出所有的从位置 (1,1) 到位置 (n,m)的路径中,权值最大的那条路径,其对应的权值是多少?

输入描述:

第一行输入两个整数 n,m (1≤n×m≤10^5),表示矩阵的大小为 n 行,m 列;

接下来输入 n 行,每一行输入 m 个整数 ai,1,ai,2,...,ai,m (0≤ai,j≤10^9),分别表示矩阵的每个位置上元素的值。

输出描述:

复制代码
输出一个整数ans,表示最大的路径权值。

示例1

输入

复制代码
3 3
1 1 1
0 0 1
0 0 1

输出

复制代码
1
复制代码
#include<bits/stdc++.h>
using namespace std;
#define fp(i,a,b) for(int i=a;i<=b;i++)
#define PII pair<int,int>
//typedef long long ll;
#define int long long
typedef double db;
const int N=1e6+10;
const int M=505;
const int mod=1e9+7;
int n,m;
int a[N];
bool tr[N],u[N];
int id(int x,int y)
{
   return (x-1)*m+y;
} 
void dfs(int x,int y)
{
	if(!tr[id(x,y)])return;
	if(u[id(x,y)])return;
	u[id(x,y)]=1;
	if(x>1)dfs(x-1,y);
	if(x<n)dfs(x+1,y);
	if(y>1)dfs(x,y-1);
	if(y<m)dfs(x,y+1);
}
bool check(int mid)
{
	memset(u,0,sizeof u);
	memset(tr,0,sizeof tr);
	
	for(int i=1;i<=n*m;i++)
	{
		if((a[i]&mid)==mid)tr[i]=1;
	}
	dfs(1,1);
	return u[n*m];
}
void solve()
{ 
   cin>>n>>m;
   int ans=0;
   
   fp(i,1,n)
   {
   	fp(j,1,m)
   	{
   		cin>>a[id(i,j)];
	}
   }
   
   for(int t=30;t>=0;t--)
   {
   	if(check(ans|(1<<t)))ans|=1<<t;
   }
   
   cout<<ans<<"\n";
}
signed main()
{
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    
    
    int T;
//    cin>>T;
    T=1;
    while(T--){
    	solve();
	}


    return 0;
}

思路:从2^30一直到2^0,看1*1能不能到n*m。

相关推荐
超级码力6666 小时前
【Latex文件架构】Latex文件架构模板
算法·数学建模·信息可视化
穿条秋裤到处跑7 小时前
每日一道leetcode(2026.04.29):二维网格图中探测环
算法·leetcode·职场和发展
Merlos_wind7 小时前
HashMap详解
算法·哈希算法·散列表
汉克老师8 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
Yzzz-F10 小时前
Problem - 2205D - Codeforces
算法
智者知已应修善业11 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn11 小时前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室11 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
AI科技星11 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿12 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算