HDOJ 1541 star 樹狀陣列)

2021-07-10 11:32:37 字數 561 閱讀 5248

這道題告訴我們若干顆星星的座標,告訴我們的時候y座標已經按照公升序排列了。對於每一顆星,它的等級數等於它左邊和左上角星星的顆數。最後問每一顆星星的等級。

把星星按照給我們的順序(就是y座標從小到大的順序),依次把乙個陣列中下標為x的元素加1。對於某一顆星,座標為x,那麼把陣列中下標為x及之前的所有元素相加,就是求了這顆星左邊及左上角的星星數,然後再把下標為x的元素加1。(這顆星星本身不能算進去)

#include#include#include#include#define n 32005

using namespace std;

int n, c[n], level[n];

int lowbit(int x)

int query(int x)

return sum;

}int add(int i, int d)

}int main()

for (int i = 0; i < n; i++)

printf("%d\n", level[i]);

}return 0;

}

HDOJ 1541 樹狀陣列

題目 題意 給一組星星,每顆星星左下角有多少個星星他就是多少級。然後輸出沒級星星個數。題目按y公升序。所以只要考慮x。因為x,y的範圍不大。只有32000,所以可以建立樹狀陣列了。include define pi 3.1415926 define inf 1e18 define inf 1e9 d...

樹狀陣列 HDOJ 1541 Stars

剛開始一點都不覺得是樹狀陣列。有很長一段時間覺的排個序就行了。直到重新讀題發現輸入是按順序的。不過值得注意的是輸入的x,y可能是0,但是在樹狀陣列中是不能為0的。最後加上乙個十分酷炫 喪心病狂 的輸入優化,直接跑第一面了。include include include include include...

hdu1541(線段樹的巧用)

線段樹的妙用,求乙個序列中的某個數字的前面有幾個比它小,樸素演算法是o n n 線段樹是o n logn 然後再變形下就是答案了 下面提供線段樹和樹狀陣列的解題 線段樹 include include include include include include include include i...