BZOJ 1452 Count(二維樹狀陣列)

2021-09-07 23:10:50 字數 578 閱讀 8693

題意:給出乙個數字矩陣(矩陣中任何時候的數字均為[1,100]),兩種操作:(1)修改某個位置的數字;(2)求某個子矩陣中某個數字的個數。

思路:二維樹狀陣列的操作看起來跟一維的差不多,只是迴圈改為兩重而已。主要操作有:(1)增加某個位置的值;(2)詢問[1,1,x,y]子矩陣的和。利用(2)操作以及區間的減法操作我們能求出任意乙個子矩陣的數字和。這道題用a[i][x][y]來記錄關於數字i的資訊。

int a[105][n][n];

void add(int a[n][n],int x,int y,int t)

}int query(int a[n][n],int x,int y)

return ans;

}int query(int a[n][n],int x1,int y1,int x2,int y2)

int n,m;

int b[n][n];

int main()

int q;

rd(q);

int op,x1,x2,y1,y2,c;

while(q--)

else}}

}

bzoj 1452 Count 樹狀陣列

傳送門 題目描述 輸入 輸出 樣例輸入 樣例輸出 1 2 提示 思路 因為權值最大為100 所以對於每一種權值建乙個樹狀陣列 然後維護和查詢就不多說了 ps 輸出千萬別用cout 我re了10次 改printf就a了 qwq include include include using namespa...

BZOJ1452計數問題 二維樹狀陣列

description 乙個n m的方格,初始時每個格仔有乙個整數權值,接下來每次有2個操作 改變乙個格仔的權值 求乙個子矩陣中某個特定權值出現的個數 input 每一行有兩個數字n,m 接下來n行,每行m個數字。第i 1行第j個數字表示格仔 i,j 的初值 接下來輸入乙個q,後面q行每行描述乙個操...

Count 二維樹狀陣列

12題解 對於每乙個顏色建乙個二維的樹狀陣列o c logn logm 試了試對每個顏色,每行建乙個一維陣列,超時了。o c n logm 若一維樹狀陣列不會 1 include 2 include 3 include 45 using namespace std 6 define maxn 302...