hdu1559(最大子矩陣)

2021-07-04 23:00:45 字數 955 閱讀 4026

problem description

給你乙個m×n的整數矩陣,在上面找乙個x×y的子矩陣,使子矩陣中所有元素的和最大。

input

輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y(0

output

對於每組資料,輸出乙個整數,表示子矩陣的最大和。

sample input

1

4 5 2 2

3 361 649 676 588

992 762 156 993 169

662 34 638 89 543

525 165 254 809 280

sample output

2474

活生生的暴力都可以過得呀!

不過暴力也是得有技巧的嘿嘿,如果單單是一般的每個每個相加來算那恐怕一百年都算不完了。。。。。。。

於是,用矩陣的每個點來存從最左上角那個點到該點的矩陣和!這樣所有矩陣都是很容易通過加減法來表示的(很像那個容斥原理)

具體儲存方式是可以自己琢磨出來的,不難的,琢磨出來了儲存方式具體計算不會那我也是醉了。

我只提供思路,如果不會那就看我**吧。。。

#include#include#include#includeusing namespace std;

int a[1001][1001];

int main()

int ans=0;

for(int i=x;i<=m;i++)

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

ans=max(ans,a[i][j]-a[i-x][j]-a[i][j-y]+a[i-x][j-y]);

printf("%d\n",ans);

}return 0;

}

hdu 1559最大子矩陣

一直很少練dp 這幾天再學學 在本題中 a i j 的值表示左上角為 1,1 右下角為 i,j 的矩陣的所有元素之和 給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。input 輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m...

hdu1559 最大子矩陣

problem description 給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。input 輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y 0 m,n 1000 and 0 x m and 0 y n 表...

HDU 1559 最大子矩陣

給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y 0 對於每組資料,輸出乙個整數,表示子矩陣的最大和。1 4 5 2 2 3 361 649 676 588 992 ...