牛客 雷射炸彈(二維字首和)

2021-10-06 16:07:19 字數 1590 閱讀 7651

二維字首和顧名思義,用乙個點去代表乙個矩形,查詢的時間是o(1)

sum[ i ][ j ]表示(0,0)到(i,j)的字首和。

先給出遞推公式sum[ i ][ j ] = map[ i ][ j ]+sum[ i-1 ][ j ]+sum[ i ][ j-1 ]-sum[ i-1 ][ j-1 ]

看圖就知道了,sum[i][j] 表示的是藍區域紅區域加黃區域再加右下角那個

sum[i-1][j] 表示的是藍區域加黃區域,sum[i][j-1] 表示的是藍區域加紅區域

因為藍區域重複加了所以要減掉他。

題目描述

一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。

現在地圖上有n(n ≤ 10000)個目標,用整數xi,yi(其值在[0,5000])表示目標在地圖上的位置,每個目標都有乙個價值。

雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的正方形的邊必須和x,y軸平行。

若目標位於爆破正方形的邊上,該目標將不會被摧毀。

輸入描述:

輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示 xi,yi ,vi 。

輸出描述:

輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標(結果不會超過32767)。

輸入

2 10 0 1

1 1 1

輸出

1

#include

#define ll long long

using

namespace std;

const

int maxn =

5e3+5;

int a[maxn]

[maxn]

;int

main()

for(

int i =

1; i < maxn;

++i)

for(

int j =

1; j < maxn;

++j)

a[i]

[j]+

= a[i -1]

[j]+ a[i]

[j -1]

- a[i -1]

[j -1]

;//求字首和把對應矩形的面積求出來

int ans =0;

for(

int i = r; i < maxn;

++i)

for(

int j = r; j < maxn;

++j)

printf

("%d\n"

, ans);}

return0;

}

生活不會怠慢乙個熱愛它的人,上緊你的發條,滴滴答答的轉起來就好了,你聽,小皮球,香蕉梨,馬蘭開花二十一,各有各的精彩。

雷射炸彈 二維字首和

或者 一種新型的雷射炸彈,可以摧毀乙個邊長為 r 的正方形內的所有的目標。現在地圖上有 n個目標,用整數xi,yi表示目標在地圖上的位置,每個目標都有乙個價值wi。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其 範圍,即那個邊長為 rr的正方形的邊必須和x,y軸平行。若目標位於爆破正方形的邊...

雷射炸彈 二維字首和

一種新型的雷射炸彈,可以摧毀乙個邊長為 r 的正方形內的所有的目標。現在地圖上有 n 個目標,用整數xi,yi表示目標在地圖上的位置,每個目標都有乙個價值wi。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其 範圍,即那個邊長為 r 的正方形的邊必須和x,y軸平行。若目標位於爆破正方形的邊上,...

雷射炸彈 UPC二維字首和

題目描述 一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 10000 個目標,用整數xi,yi 0 xi,yi 5000 表示目標在地圖上的位置,每個目標都有乙個價值0 vi 100。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的...