BZOJ1084 SCOI2005 最大子矩陣

2021-08-14 19:44:19 字數 649 閱讀 6154

這題顯然是dp。定義f[i][j][k]表示前i行j列裡有k個矩陣的最大元素總和。因為m<=2,所以可以分兩種情況分別寫乙個dp,套一套容斥就行了。

**如下:

#include

#include

#include

using namespace std;

const int maxn=105,maxk=15;

int n,m,n1,ans,a[maxn][3],f[maxn][maxn][maxk],s[maxn],sum[maxn][2],f1[maxn][maxk];

int main()

printf("%d\n",f1[n][n1]);

return 0;

}for (int i=1;i<=n;i++)

for (int j=1;j<=2;j++)

sum[i][j]=sum[i-1][j]+a[i][j];

for (int i=0;i<=n;i++)

for (int j=0;j<=n;j++)

for (int k=1;k<=n1;k++)

printf("%d\n",f[n][n][n1]);

return 0;}

home back

bzoj1084 SCOI2005 最大子矩陣

description 這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣 不能相互重疊。input 第一行為n,m,k 1 n 100,1 m 2,1 k 10 接下來n行描述矩陣每行中的每個元素的分值 每個元素的 分值的絕對值不超過32767 ...

BZOJ1084 SCOI2005 最大子矩陣

portal 注意到m只能為1或2 分類討論。m 1的時候其實就是最大k段連續子段和。f i j ma x f i j ma x f k j f k j 1 sum i s um k m 2時 g i j k 表示第一列到i,第二列到j,選了k個子矩陣的最大和 那麼有一下幾種情況 都不選 g i j...

BZOJ1084 SCOI2005 最大子矩陣

bzoj1084 scoi2005 最大子矩陣 這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣不能相互重疊。第一行為n,m,k 1 n 100,1 m 2,1 k 10 接下來n行描述矩陣每行中的每個元素的分值 每個元素的分值的絕對值不超過32...