poj 2352 樹狀陣列

2021-06-07 08:16:27 字數 649 閱讀 7336

這道題好像被賤做了,看起來像二維的樹狀陣列,其實只是一維的,可能是資料太大了,矩陣開不那麼大,因為題意是求乙個矩陣中做它左下部分的個數,而去輸入的順序是按y公升序,後x公升序輸入。其實如果不按這個順序可以下排序。

然後就是一維的樹狀陣列的思路了。

轉個圖,可以知道它的這陣列性質了:

#include

#include

#include

#include

using namespace std;

const int max_stars=15005;

const int max_coor=32005;

int tree[max_coor];

int totalnumlev[max_stars];

int lowbit(int x)

//計算陣列a[1...x]的和

int sum(int x)

return s;}

/、將a[x]的值增加t

void update(int x, int t)

}int main()

for(int i=0;ireturn 0;

}

poj 2352 樹狀陣列

第一次做樹狀陣列的題,還是遇到了一點小麻煩,吃一塹長一智。對於樹狀陣列來說,下標不能從0開始,否則就死迴圈了。因為0 lowbit 0 0 就死迴圈下去了。其他的就沒什麼了,其實這道題就看x值,而且題意還給排好序了。直接計算就ok了。如下 include include include includ...

poj2352 樹狀陣列

題意 求0 n級別的星星的個數 以每乙個星星為原點建立平面直角座標系,在當前座標系第三象限的星星的個數看做乙個星星的級別數 include include include include include include include include include include using na...

POJ 2352 樹狀陣列

這個樹狀陣列寫起來就輕鬆多了。因為這個點的輸入的要求比較特殊,剛好都已經構成了寫樹狀陣列的要求,實際上只需要把資料直接進行樹狀陣列的add和sum操作即可。可以模擬很輕鬆得到邏輯的答案,唯一要注意的就是這些點座標是從0開始的,處理一下就好了。include include includeusing ...