這題是一個簡單的二維數(shù)組操作題,簡單是因為,這個和你在網(wǎng)上找到的介紹一維樹狀數(shù)組的操作差不多,只不過這個是二維的而已。
對于一個二維的樹狀數(shù)組,你可以這樣認(rèn)為:是一個一維數(shù)組,但是每個元素又是一個一維數(shù)組,也就是一維數(shù)組套一維數(shù)組。
那么更新時,可以認(rèn)為是更新每個一維數(shù)組的值,但是一維數(shù)組又是一個一維數(shù)組,那么還得更改里面的一維數(shù)組的值。
那么update函數(shù)就變成了下面的代碼:
update
同樣的求和函數(shù)read()就會變成如下代碼:
read
對于這兩個函數(shù)理解了之后,這題就是一個很簡單的題了,update函數(shù)不用變,但是求和時就要改變了,不過也不能叫改變,因為,求和時會用到上面的read函數(shù)。但是所要求是一個矩形,也就是不一定是從(1,1)開始。那么我們可以變成四個矩形的和或者差,比如我們要求sum(x1,y1,x2,y2)時我們可以變成read(r,t)-read(l-1,t)-read(r,b-1)+read(l-1,b-1)。也就是大矩形減去兩個小矩形然后再加一個多減去的矩形。