樹狀陣列一般的操作只有:
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...