poj2352(樹狀陣列)

2022-08-21 19:03:17 字數 753 閱讀 5311

題意:在直角座標系中給出n個點的 (x,y),(0<=x,y<=32000),定義每個點的level為(x',y')的數量,其中x'<=x,y'<=y。輸出所有level的點的個數。

思路:這幾天開始寫樹狀陣列的題,加油!!因為輸入為按y公升序排列,在y相等時按x公升序排列。所以當輸入點i時,對其level有貢獻的點一定在點i之前,而不會在其後。所以點i的level為之前出現的點的橫座標<=xi的個數。然後就特別適合用樹狀陣列和線段樹來解了,用樹狀陣列tr[x]來儲存橫座標屬於[1,x]之間的點的個數,每次輸入進行區間查詢和單點修改。要注意的是這裡要把x加一,因為題目的x從0開始,相當於所有點右移一位。

ac**:

#include#include

using

namespace

std;

inline

intread()

while(isdigit(c))

return f?-x:x;

}int n,tr[32005],ans[15005

];int lowbit(int

x)void update(intx)}

int query(int

x)

return

ans;

}int

main()

for(int i=0;ii)

printf(

"%d\n

",ans[i]);

return0;

}

poj 2352 樹狀陣列

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

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...