51nod 1051 最大子矩阵和
2018-02-09 18:01
239 查看
没想到居然可以O(n3)暴力过
就是大概之前的 最大连续子序列和
加成2维度了 枚举起始列 和 终止列 然后计算从1到n行最大的子矩阵的和
注意n 和 m 的输入顺序!!
就是大概之前的 最大连续子序列和
加成2维度了 枚举起始列 和 终止列 然后计算从1到n行最大的子矩阵的和
注意n 和 m 的输入顺序!!
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 600; ll s[maxn][maxn],sum[maxn][maxn]; int main () { int m,n; scanf("%d %d",&m,&n); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%lld",&s[i][j]); sum[i][j] = sum[i][j-1] + s[i][j];//sum[i][j]记录第i行从1到j的前缀和 } } ll res=0; for(int l=1;l<=m;l++) { for(int j=0;j+l<=m;j++)//枚举起始 终止列 { int r = l+j; ll x= 0; for(int k=1;k<=n;k++)//每行 { x = max(x,(ll)0) +sum[k][r] -sum[k][l-1]; res = max(res,x); } } } printf("%lld\n",res); }
相关文章推荐
- 【51Nod】1051 - 最大子矩阵的和(dp)
- 51Nod 1051 最大子矩阵和
- 51nod 1049 1050 1051 (循环数组)最大子段(子矩阵)和(dp)
- [51nod 1051 最大子矩阵和]前缀和+dp
- 51nod 1051 最大子矩阵和
- 51Nod-1051-最大子矩阵和
- 51nod 1051 最大子矩阵和【dp】
- 51nod 1051 最大子矩阵和 (dp_good)
- 51nod 1051 最大子矩阵和
- 51Nod 1051 最大子矩阵和 (最大子段和变形)
- 51Nod-1051 最大子矩阵和【最大子段和+DP】
- 51nod 1051 最大子矩阵和 dp
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和
- 51Nod 1051 最大子矩阵和(二维最大字段和dp)
- 51nod 1051 最大子矩阵和
- 51nod 1051 最大子矩阵和(基础dp)
- 51Nod 1051 最大子矩阵和