[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时)

原文地址:https://www.cnblogs.com/wmrv587/p/3958645.html