D 牛妹吃豆子 二維字首和 差分陣列)

2021-10-05 06:26:47 字數 721 閱讀 5134

題目傳送門

給定矩陣:k個區間修改,給q個詢問區間和。

思路:二維差分陣列板子題。

ac**:

#include

using

namespace std;

const

int n=

2e3+5;

typedef

long

long ll;

ll a[n]

[n];

intmain()

for(

int k=

0;k<

2;k++

)//迭代兩遍,第一遍利用差分陣列求原陣列,第二遍遞推字首和.

for(

int i=

1;i<=n;i++

)for

(int j=

1;j<=m;j++

) a[i]

[j]=a[i]

[j]+a[i-1]

[j]+a[i]

[j-1

]-a[i-1]

[j-1];

//第二遍右邊的a[i][j]代表陣列中的數.遞推後變成字首和

while

(q--

)return0;

}

二維差分陣列和二維字首和的個人看法

一維差分陣列和字首和都挺熟悉的,做題在打cf的時候做到了乙個看別人用二維差分陣列求字首和的題,驚呆了,於是來補了下這方面的知識。在學習和理解二維的時候,我們拿一維來對比就行了,思想是類似的但是略有所不同。設乙個二維陣列a i j 那麼它的二維字首和即為從 i,j 到原點 0,0 所有數之和,或者說這...

一維字首和與差分陣列

前言 對於一些列舉演算法題當中,往往會涉及到時間複雜度太高而無法ac的情況 利用字首和的方法可以以空間換時間,是對一些列舉題當中很重要的優化演算法。下面介紹兩常用的性質上用來輔助的演算法 核心思路 字首和 前n項的和 前n 1項和減去第n 1項 例題應用 隨機給定l和r兩個整數,返回arrays這個...

地毯 二維差分和二維字首和

見 類似於一維差分,o 1 的時間複雜度。二維差分相關概念 均是搬運 當對乙個二維區間內的所有數做出全部加乙個數或者全部減乙個數的操作時,需要修改二維差分矩陣內的四個點。比如我想讓a x1 y1 和a x2 y2 兩對角頂點圍成的矩形區域內的所有點都加1,則我需要 讓a x1 y1 a x1 y2 ...