zoukankan      html  css  js  c++  java
  • [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时)

  • 相关阅读:
    Linux文件权限
    Linux命令
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/wmrv587/p/3958645.html
Copyright © 2011-2022 走看看