[bzoj1084][SCOI2005]最大子矩阵(DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1084
分析:
m=1时:相当于只有一行数,让你取出p段,使得总和最大
明显可以DP,f[i][j]表示前i个数,已经取出了j段的总和最大值,那么ans=f[n][p]
f[i-1][j] 第一种情况:第i位不取
那么f[i][j]=max
f[i'][j-1]+sum[i'+1...i] 第二种情况:取以第i位为末的[i'+1,i]段
m=2时:由m=1的启发可以继续DP
f[i][j][k]表示第一列的前i个数、第二列的前j个数,一共取了k个矩阵的最大矩阵和,ans=f[n][n][p]
max(f[i-1][j][k],f[i][j-1][k]) 第一种情况:第一列的第i个位置不取或者第二列的第j个位置不取
那么f[i][j]=max max(f[i'][j][k-1]+sum[1][i'+1...i],f[i][j'][k-1]+sum[2][j'+1...j]) 第二种情况:取一列若干行的矩阵
f[i-l][j-l][k-1]+sum[1][i-l+1...i]+sum[2][j-l+1...j] (i==j) 第三种情况:取l行2列的矩阵(只有在i==j时)