@(e acmer)
題意:給你乙個矩陣,求它的所有元素和最大的子矩陣.
分析:
我們只知道一維的情況就是經典的最大子段和.然而維數達到二維就變的複雜了.我們觀察資料範圍500,易想到n3
的演算法也能過.純暴力是n4
的方法
然後可以通過列舉其中一維,dp最後一維的方法求出.
處理列上的和為字首和,然後列舉列的開頭和結尾,形成的段,然後再在行上進行最大子段和複雜度剛好n3
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef pair pii;
typedef
long
long ull;
typedef
long
long ll;
typedef
vector
vi;
#define xx first
#define yy second
#define rep(i, a, n) for (int i = a; i < n; i++)
#define sa(n) scanf("%d", &(n))
#define vep(c) for(decltype((c).begin()) it = (c).begin(); it != (c).end(); it++)
const
int mod = int(1e9) + 7, inf = 0x3fffffff, maxn = 1e5 + 12;
ll a[555][555];
ll dp[555];
int main(void)
}ll max_sum=-inf;
for(int i=1; i<=n; i++)
} }
printf("%lld\n",max_sum);
}return
0;}
最大子矩陣 DP
time limit 10000ms memory limit 165888kb 64bit io format lld llu hysbz 1084 這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣不能相互重疊。第一行為n,m,k 1 n 10...
最大子矩陣 dp
已知矩陣的大小定義為矩陣中所有元素的和。給定乙個矩陣,你的任務是找到最大的非空 大小至少是1 1 子矩陣。比如,如下4 4的矩陣 0 2 7 0 9 2 6 2 4 1 4 1 1 8 0 2 的最大子矩陣是 9 2 4 1 1 8 這個子矩陣的大小是15。輸入是乙個n n的矩陣。輸入的第一行給出n...
dp專題 最大子矩陣
題目大意 求乙個最大為100 100矩陣中的子矩陣中元素之和的最大值。列舉此子矩陣是第i行到第j行。然後壓成一維dp最大子段和。include include include include include include include include include include includ...