poj 2352 Stars(樹狀陣列)

2021-06-20 07:04:24 字數 672 閱讀 8967

題意:依次給出n個星星的座標(y座標以非遞減的順序輸入),對於每個星星,她的等級等於她左下方的星星的個數和(包括邊界上的星星),要求輸出等級0到等級n-1的星星的個數。(0 <= x, y, <= 32000, 1 <= n <= 15000)

——>>設x[i]表示橫座標為i的星星有多少顆,那麼對於乙個單一詢問(星星(k, y)的等級是多少?),要求的是x的前k項和,於是樹狀陣列來了。。。

坑點:座標範圍覆蓋0,對樹狀陣列的一般寫法是從1開始計數的,所以,對於每個x座標+1來計算。假如不+1,我這返回的結果竟是tle。。。

#include #include using namespace std;

const int maxn = 15000 + 10;

const int maxf = 32000 + 10;

int n, lev[maxn];

int c[maxf];

int lowerbit(int x)

int sum(int x)

return sum;

}void add(int x)

}int main()

for(int i = 0; i < n; i++) printf("%d\n", lev[i]);

}return 0;

}

樹狀陣列 poj2352 Stars

stars 題目 題意 在乙個二維陣列中統計某個等級星星的個數,星星的等級為不比此星星高且不在它右邊範圍內的星星個數。題解 因為輸入的資料已經排序,只要一邊接收輸入一邊計算等級即可。include includeusing namespace std int a 15005 c 32010 defi...

poj 2352 Stars 樹狀陣列

我的第一道樹狀陣列哇咔咔 大一的時候怎麼都看不懂,也許我當時太不用心了吧。題意 給一些點的座標,每個點的level是看比它高度低且不在它右邊的點的個數。演算法 由於此題座標本來就是按y值從小到大,x值從小到大排列的。所以樹狀陣列中存座標為x的點的個數。每次讀入只要找1 x的sum,然後更新數量 1即...

POJ 2352 Stars 樹狀陣列

題目大意 給出y值公升序的一些點,定義乙個點的level值為它左下方的點的數量,求每乙個level有多少個點。思路 由於y值是公升序的,那麼後面的點只要判斷是否x值比前面的大就行了。那麼就用樹狀陣列維護。code include include include include define max ...