hdu1541 Stars 樹狀陣列

2021-09-11 07:57:30 字數 675 閱讀 7228

有n個點(xi,yi)

輸入時保證按y公升序,

即先按y小的輸入,y相同時按x公升序輸入

如果對於(xi,yi)來說,

位於x<=yi&&y<=yi區域的點有ki個

則level[ki]++

最終輸出level[0]到level[n-1]的值

思路**的題主忘了初始化c陣列hhhh

其實亂序的話,按加粗題排序一下也能搞

然後既然是這樣的輸入,題目也給的那麼明顯

所以就相當於把二維降成一維的線性

這樣就相當於統計在加入這個值之前有多少x值比它小

所以就變成了統計順序對的裸題

bit和線段樹先統計區間和再插入乙個點搞一搞就好了

這題重點在於兩處

①bit是不能處理下標0的,

所以0<=x<=3w2要++x

②把二維降成一維統計之前的排序方法

struct node

;bool cmp(node a,node b)

void add(int i,int v)

int main()

for(int i=0;iprintf("%d\n",level[i]);

} return 0;

}

hdu 1541 Stars 樹狀陣列

題意 大概就是計算每顆星星左下邊包括了多少顆星星,這個數值就是level。左下邊不包括本身,不超過本身的x,y的座標,可以等於。問每種level有多少顆星星。這題,一開始想不到怎麼用到樹狀陣列,後來看了一下,發現題目給的資料是已經按x,y排好序的。所以我們可以不用管y的值,為什麼呢?我們乙個星星乙個...

HDU 1541 Stars(樹狀陣列)

題目鏈結 解析 題意 大概就是計算每顆星星左下邊包括了多少顆星星,這個數值就是level。左下邊不包括本身,不超過本身的x,y的座標,可以等於。問每種level有多少顆星星。這題,一開始想不到怎麼用到樹狀陣列,後來看了一下,發現題目給的資料是已經按x,y排好序的,所以我們可以不用管y的值。注意 1....

HDU 1541 Stars 樹狀陣列

題義為給定n個點按照先x軸,後y軸座標排序,求某一點的左下角的星星數量,剛開始用二維的樹狀陣列來做,結果肯定是記憶體不過用。該題正解為在給定的座標點的排序後,只對x軸座標建立乙個一維陣列,對於當前狀態按x軸將平面劃分成m個區域,由於給定的點的y軸座標一定是當前最高的,所以直接對橫座標前求和即可。如下...