poj2155(二維樹狀陣列)

2021-06-23 02:00:04 字數 655 閱讀 2524

題意:乙個n*n的矩陣,兩種操作,更新以a[x1,y1]為左上角,a[x2,y2]為右下角的矩陣,查詢a[i,j]點的值

思路:二維樹狀陣列好題,就查詢操作而言,只要知道那個點的翻轉次數的奇偶性就可以了,所以每次操作我們只需要更新四個點,然後求(1,1)到該點的sum

然後就可知道他的奇偶性了,至於更新哪四個點自己畫個圖感覺下就可以了

**如下:

#include#include#include#include#include#include#include#include#include#include#include#define inf 0x7ffffff

#define eps 1e-9

#define n 1005

#define pi acos(-1.0)

using namespace std;

int flag[n][n],c[n][n];

int lowbit(int x)

void update(int x,int y)

int sum(int x,int y)

int main()

else

}if(t)

printf("\n");

}return 0;

}

poj 2155 (二維樹狀陣列)

這個題目就是給你乙個0 1矩陣,每次給你乙個長方形的矩形,在矩形內的所有資料都做非運算。看出來是乙個二維的樹狀陣列,就是求每個點經過了幾次翻轉,而c陣列就是記錄翻轉的個數的!相當於加 1 q時就做 2或者是 2運算 很基礎的模板題。include include include include us...

poj 2155(二維樹狀陣列)

題意 給出一組資料,初始值全部為0,再給出兩個座標,對在這範圍之類的資料取反 1變為0,0變為1 在訊問乙個點,輸出那個點的值。思路 二維樹狀陣列,區間更新,單點求值,先將取反次數相加,在對2取餘。includeusing namespace std define max 1010 int c ma...

POJ 2155 二維樹狀陣列

資訊學中的 0 和 1 這篇文章給出了該題目的二維樹狀陣列做法。因為矩陣只含0和1,所以可以採取記錄每個元素被置換的次數來獲得該元素最後的狀態。每次置換只需讓端點 x1,y1 x1,y2 1 x2 1,y1 x2 1,y2 1 加一。查詢的時候利用維護的樹狀陣列,得到元素 x,y 的置換次數判斷其奇...