字首和與差分

2021-10-24 23:53:13 字數 2194 閱讀 1920

地圖上有 n 個目標,用整數xi,yi表示目標在地圖上的位置,每個目標都有乙個價值wi。

注意:不同目標可能在同一位置。

現在有一種新型的雷射炸彈,可以摧毀乙個包含 r×r 個位置的正方形內的所有目標。

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

求一顆炸彈最多能炸掉地圖上總價值為多少的目標。

輸入格式

第一行輸入正整數 n 和 r ,分別代表地圖上的目標數目和正方形的邊長,資料用空格隔開。

接下來n行,每行輸入一組資料,每組資料報括三個整數xi,yi,wi,分別代表目標的x座標,y座標和價值,資料用空格隔開。

輸出格式

輸出乙個正整數,代表一顆炸彈最多能炸掉地圖上目標的總價值數目。

資料範圍

0≤r≤109

02 1

0 0 1

1 1 1

輸出樣例:

#include

using

namespace std;

int f[

5010][

5010];

intmain()

for(

int i=

1;i<=m;i++

)for

(int j=

1;j<=n;j++

) f[i]

[j]+

=f[i-1]

[j]+f[i]

[j-1

]-f[i-1]

[j-1];

for(

int i=r;i<=m;i++

)for

(int j=r;j<=n;j++

) sum=

max(sum,f[i]

[j]-f[i-r]

[j]-f[i]

[j-r]

+f[i-r]

[j-r]);

cout<

}

標籤字首和題目解析求矩陣中固定長度矩陣的最大值

思路

計算矩陣中每個點的方法

有 n 頭牛站成一行,被編隊為1、2、3…n,每頭牛的身高都為整數。

當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。

現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h ,剩餘牛的身高未知。

但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可以相互看見。

求每頭牛的身高的最大可能值是多少。

輸入格式

第一行輸入整數n,p,h,m,資料用空格隔開。

接下來m行,每行輸出兩個整數 a 和 b ,代表牛 a 和牛 b 可以相互看見,資料用空格隔開。

輸出格式

一共輸出 n 行資料,每行輸出乙個整數。

第 i 行輸出的整數代表第 i 頭牛可能的最大身高。

資料範圍

1≤n≤10000,

1≤h≤1000000,

1≤a,b≤10000,

0≤m≤10000

輸入樣例:

9 3 5 5

1 35 3

4 33 7

9 8

輸出樣例:

545

3445

55

#include

using

namespace std;

int height[

100]

;int

main()

)));

height[a+1]

--,height[b]++;

}}for(

int i=

1;i<=n;i++

)}

標籤差分思路每乙個數與前乙個數的差值為差分

只可能出現巢狀不可能出現交叉,每次出現一對關係,都將這對關係中的數減1

字首和與差分

數列的字首和 sum i 表示a 1 a i 的和 用處1 求i j的和sum j sum i 1 用處2 區間修改。設定乙個change陣列。當區間 i,j 上要加k時,我們令change i k,令change j 1 k。如果我們對change陣列求字首和的話,字首和sum change i ...

字首和與差分

從陣列第乙個開始累加 s i s i 1 a i 求區間 l,r 的和,o 1 複雜度sum s r s l 1 遞推s i j s i j s i 1 j s i j 1 s i 1 j 1 例題 雷射炸彈一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 1000...

字首和與差分

例題入口 include const int n 320 int a n n a i 1 a i 0 1.對a 求出平方數 將其值置為1 不是平方數就是0 2.對a求乙個字首和 3.對 a,b 求乙個部分和 int sum n n void init for int i 1 i 100000 i i...