hdu1892二維樹狀陣列

2021-06-16 17:45:08 字數 1089 閱讀 3728

樹狀陣列一般的操作只有:

1.單點更新,區間查詢

2.區間更新,單點查詢

其中區間更新和單點更新不能同時寫在一起,會對樹狀陣列的結構早成影響。

這題:wa的情況主要是沒有考慮到(x1,y1)可能大於(x2,y2);

訓練:訓練題鏈結

**:#include#include#include#include#include#include#include#define maxn 2005

#define inf 0xfffffff

#define n 1005

#define min(a,b) ab?a:b

using namespace std;

int c[maxn][maxn];

char s[10];

void swap(int& x,int& y)

int lowbit(int x)

void updata1(int x,int y,int num)//單點更新

}}/*

void updata2(int x,int y,int num)//區間更新

}}*/

int sum1(int x,int y)//區間查詢

}return ret;}/*

int sum2(int x,int y)//單點查詢

}return ret;}*/

int main()

scanf("%d",&n);

while(n--)

if(y1>y2)

x1++,y1++,x2++,y2++;

printf("%d\n",(sum1(x2,y2)-sum1(x2,y1-1)-sum1(x1-1,y2)+sum1(x1-1,y1-1)));

}else if(s[0]=='a')

else if(s[0]=='d')

{scanf("%d %d %d",&x1,&y1,&n1);

x1++,y1++;

x2=x1,y2=y1;

int tmp=sum1(x2,y2)-sum1(x2,y1-1)-sum1(x1-1,y2)+sum1(x1-1,y1-1);

if(tmp

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座標會進入死...

二維樹狀陣列 hdu1892

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