HDU 1892 二維樹狀陣列

2022-05-02 21:51:13 字數 861 閱讀 8409

題目大意:有很多方格,每個方格對應的座標為(i,j),剛開始時每個格仔裡有1本書,然後讓你統計一片區域有多少本書,還可以增加書和減少,移動書。

解題思路:

和一維樹狀陣列沒撒子區別。一維擴充套件到二維而已。

需要注意的兩點是:1.x,y座標從0開始,所以儲存更新的時候座標分別加1進行更新。因為0座標會進入死迴圈。

2.區間求和的時候bit陣列裡面存的是它整個左下角的和,所以還要進行操作(即下面的find函式)讓它表示的此位置的數目。

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int maxn=1005;8

intbit[maxn][maxn];910

int lowbit(int

x)11

1415

void add(int x, int y, int

val)

1625 x+=lowbit(x);26}

27}2829

int sum(int x, int

y)30

40 x-=lowbit(x);41}

42return

ans;43}

4445

int find(int x,int

y)46

4950

intmain()

5173

else

if(ch[0]=='m'

)7480else

8188}89

}90return0;

91 }

hdu1892二維樹狀陣列

樹狀陣列一般的操作只有 1.單點更新,區間查詢 2.區間更新,單點查詢 其中區間更新和單點更新不能同時寫在一起,會對樹狀陣列的結構早成影響。這題 wa的情況主要是沒有考慮到 x1,y1 可能大於 x2,y2 訓練 訓練題鏈結 include include include include inclu...

hdu 1892 樹狀陣列,二維

注意點 輸入時x1,x2,y1,y2的大小判斷,x,y從0開始,書拿光時的判斷 第一題二維,還是蠻神奇的。include include includeusing namespace std define m 1002 int tree m 1 m 1 int lowbit int x void u...

二維樹狀陣列 hdu1892

二維樹狀陣列 hdu1892 二維書架上原本有1本書 t組樣例,四種操作,search,add,del,move 書架上的書小於del的值時,取完該格仔的書即可 查詢操作用二維的容斥推 由於格仔取值可以等於0,故下標都 1 include include include include includ...