題目大意:
有很多方格,每個方格對應的座標為(i,j),剛開始時每個格仔裡有1本書,然後讓你統計一片區域有多少本書,還可以增加書和減
少,移動書。
演算法思想:
二維樹狀陣列。
需要注意的兩點是:
1.x,y座標從0開始,所以儲存更新的時候座標分別加1進行更新。因為0座標會進入死迴圈。
2.區間求和的時候bit陣列裡面存的是它整個左下角的和,所以還要進行操作(即下面的solve函式)讓它表示的此位置的數目。
#include using namespace std;
const int n = 1005;
int bit[n][n];
int lowbit(int x)
void add(int x,int y,int val)
x += lowbit(x);
}}int sum(int x,int y)
x -= lowbit(x);
}return ans;
}int solve(int x,int y)
int main()
else if(op[0] == 'm')
else}}
return 0;
}
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...
HDU 1892 二維樹狀陣列
題目大意 有很多方格,每個方格對應的座標為 i,j 剛開始時每個格仔裡有1本書,然後讓你統計一片區域有多少本書,還可以增加書和減少,移動書。解題思路 和一維樹狀陣列沒撒子區別。一維擴充套件到二維而已。需要注意的兩點是 1.x,y座標從0開始,所以儲存更新的時候座標分別加1進行更新。因為0座標會進入死...