1. 程式人生 > >Bzoj-1084 最大子矩陣

Bzoj-1084 最大子矩陣

lap std urn sed color bcb ffffff ace 我不

這題的思路好妙啊,一開始看到這題不會寫(沒瞄到m的範圍

然後定睛一看$m<=2$!而且$n<=100$,一般按照這種題的尿性不是n3就是n3加個log...

可是我還是不會寫啊qwq...三維...$f[i][j][k]$!都代表啥啊Qwq...到$(1,1)到$(i,j)$的矩陣中取k個的最大值?我不會啊qwq...

然後被大爺教了一波--這題水啊qwq...

首先分兩類吧

m=1的情況,$f[i][K]$表示第1列i行取k個矩陣的最大值

$f[i][K]=max(f[I][K-1]+sum[i]-sum[I];$

$f[i][K])/f[i][K]=f[i-1][K];$

m=2的情況,$f[i][j][K]$表示第1列第i行和第2列第j行取k個矩陣的最大值

$F[i][j][K]=max(F[i-1][j][K],F[i][j-1][K]);$

$F[i][j][K]=max(F[I][j][K-1]+sum[i][0]-sum[I][0],F[i][j][K]);$

$F[i][j][K]=max(F[i][J][K-1]+sum[j][1]-sum[J][1],F[i][j][K]);$

$F[i][j][K]=max(F[i][j][K],F[I][I][K-1]+sum[j][1]-sum[I][1]+sum[i][0]-sum[I][0]);$

技術分享圖片
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 using namespace std;
 6 #define ll long long
 7 #define inf 0x7fffffff
 8 #define maxn 105
 9 #define maxk 15
10 int f[maxn][maxk],F[maxn][maxn][maxk];
11 int n,m,k;
12 
13 int
main() 14 { 15 cin>>n>>m>>k; 16 if(m==1) 17 { 18 int sum[maxn]={0}; 19 for(int i=1;i<=n;i++) 20 { 21 int x;cin>>x;sum[i]=sum[i-1]+x; 22 } 23 for(int i=1;i<=n;i++) 24 for(int K=1;K<=k;K++) f[i][K]=-inf; 25 for(int i=1;i<=n;i++) 26 for(int K=1;K<=k;K++) 27 { 28 f[i][K]=f[i-1][K]; 29 for(int I=0;I<i;I++) 30 f[i][K]=max(f[I][K-1]+sum[i]-sum[I],f[i][K]); 31 } 32 cout<<f[n][k]<<"\n"; 33 } 34 else 35 { 36 int sum[maxn][2]={0}; 37 for(int i=1;i<=n;i++) 38 for(int j=0;j<m;j++) 39 { 40 int x;cin>>x;sum[i][j]=sum[i-1][j]+x; 41 } 42 for(int i=1;i<=n;i++) 43 for(int j=1;j<=n;j++) 44 for(int K=1;K<=k;K++) F[i][j][K]=-inf; 45 for(int i=1;i<=n;i++) 46 for(int j=1;j<=n;j++) 47 for(int K=1;K<=k;K++) 48 { 49 F[i][j][K]=max(F[i-1][j][K],F[i][j-1][K]); 50 for(int I=0;I<i;I++)F[i][j][K]=max(F[I][j][K-1]+sum[i][0]-sum[I][0],F[i][j][K]); 51 for(int J=0;J<j;J++)F[i][j][K]=max(F[i][J][K-1]+sum[j][1]-sum[J][1],F[i][j][K]); 52 if(i==j) 53 for(int I=0;I<i;I++) 54 F[i][j][K]=max(F[i][j][K],F[I][I][K-1]+sum[j][1]-sum[I][1]+sum[i][0]-sum[I][0]); 55 } 56 cout<<F[n][n][k]<<"\n"; 57 } 58 return 0; 59 }
[SCOI2005]最大子矩陣

Bzoj-1084 最大子矩陣