POJ 2352 Stars 樹狀陣列

2021-09-30 14:04:37 字數 825 閱讀 3020

點我看題

題意:給出n個星星的座標,將這n個星星分為0~n-1這n個等級,第0等級表示這顆星星的左下角沒有其他星星,第一等級表示這顆星星的左下角有一顆星星......以此類推,問每個等級的星星有多少個??

分析:本題中已經明確說明y座標非遞減,所以在計算每顆星星左下角有多少個星星的時候,其實只需要記錄它的左邊有多少課星星就ok了,那麼就把這些星星全都看成是在x軸上的星星,然後利用樹狀陣列,對於每乙個處在位置為x的星星,他會與它前面的星星一起為sum(x+1)等級的星星有乙份貢獻,同時,比x+1更大的座標處是否有星星是不確定的,所以只能暫時更新sum[i]而不能確定其他level.

參考**:

#include#include#include#include#includeusing namespace std;

const int maxn = 15010;

const int maxm = 32010;

int n;

int sum[maxm];

int level[maxn];

//清零x的二進位制高位

inline int lowbit( int x)

//表示到x以內有多少在它左下角的

int sum( int x)

return ans;

}//x-1會影響右上角的數量

void update( int x)

}int main()

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

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

return 0;

}

樹狀陣列 poj2352 Stars

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

poj 2352 Stars(樹狀陣列)

題意 依次給出n個星星的座標 y座標以非遞減的順序輸入 對於每個星星,她的等級等於她左下方的星星的個數和 包括邊界上的星星 要求輸出等級0到等級n 1的星星的個數。0 x,y,32000,1 n 15000 設x i 表示橫座標為i的星星有多少顆,那麼對於乙個單一詢問 星星 k,y 的等級是多少?要...

poj 2352 Stars 樹狀陣列

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