題目描述 description在幻想鄉,射命丸文是以**聞名的鴉天狗。當然,文文的照相機可不止能夠照相,還能夠消除取景框裡面所有的彈幕。假設現在文文面前有一塊n行m列的彈幕群,每乙個單位面積內有分值有num[i][j]的彈幕。相機的取景框可以將一塊r行c列的彈幕消除,並且得到這一塊區域內所有彈幕的分值(累加)。現在文文想要取得盡可能多的分值,請你計算出她最多能夠得到的分值。題解:最暴力的做法就是列舉每乙個子矩陣求和找最大值,這樣顯然會超時。我們可以用矩陣字首和來做這道題。我們讀入的時候順便求一下矩陣字首和,然後就可以直接用。那麼我們怎麼通過矩陣字首和求子矩陣的和呢?其實跟字首和差不多,詳見下圖:輸入描述 input description
第1行:4個正整數n,m,r,c 第2..n+1行:每行m個正整數,第i+1行第j個數表示num[i][j]
輸出描述 output description
第1行:1個整數,表示文文能夠取得的最大得分
樣例輸入 sample input
3 5 2 3
5 2 7 1 1
5 9 5 1 5
3 5 1 5 3
樣例輸出 sample output
33資料範圍及提示 data size & hint
對於60%的資料:1 <= n,m <= 200
對於100%的資料:1 <= n,m <= 1,000 1 <= r <= n, 1 <= c <= m 1 <= num[i][j] <= 1000
保證結果不超過2,000,000,000
矩陣4的和等於最大的矩陣減去((矩陣1+矩陣2)+(矩陣1+矩陣3)- 矩陣1),矩陣字首和就是這樣233,然後我們就可以o(1)詢問某個子矩陣的和,是不是很神奇╮(╯▽╰)╭。
**如下:
#include
#include
#include
using namespace std;
intsum[1010][1010],map[1010][1010];
int main()
for(int i=1;i<=n-r+1;i++)
for(int j=1;j<=m-c+1;j++)
if(sum[i+r-1][j+c-1]-sum[i+r-1][j-1]-sum[i-1][j+c-1]+sum[i-1][j-1]>maxx)//找子矩陣和的最大值
maxx=sum[i+r-1][j+c-1]-sum[i+r-1][j-1]-sum[i-1][j+c-1]+sum[i-1][j-1];
printf("%d",maxx);
return
0;}
codevs 1373 射命丸文
題目描述 description 在幻想鄉,射命丸文是以 聞名的鴉天狗。當然,文文的照相機可不止能夠照相,還能夠消除取景框裡面所有的彈幕。假設現在文文面前有一塊n行m列的彈幕群,每乙個單位面積內有分值有num i j 的彈幕。相機的取景框可以將一塊r行c列的彈幕消除,並且得到這一塊區域內所有彈幕的分...
codevs1373 射命丸文
題目描述 description 在幻想鄉,射命丸文是以 聞名的鴉天狗。當然,文文的照相機可不止能夠照相,還能夠消除取景框裡面所有的彈幕。假設現在文文面前有一塊n行m列的彈幕群,每乙個單位面積內有分值有num i j 的彈幕。相機的取景框可以將一塊r行c列的彈幕消除,並且得到這一塊區域內所有彈幕的分...
codevs 1373 射命丸文
在幻想鄉,射命丸文是以 聞名的鴉天狗。當然,文文的照相機可不止能夠照相,還能夠消除取景框裡面所有的彈幕。假設現在文文面前有一塊n行m列的彈幕群,每乙個單位面積內有分值有num i j 的彈幕。相機的取景框可以將一塊r行c列的彈幕消除,並且得到這一塊區域內所有彈幕的分值 累加 現在文文想要取得盡可能多...