hdu 1541 Stars(樹狀陣列)

2022-03-07 15:36:14 字數 556 閱讀 6330

題意:求座標0到x間的點的個數

思路:樹狀陣列,主要是轉化,根據題意的輸入順序,保證了等級的公升序,可以直接求出和即當前等級的點的個數,然後在把這個點加入即可。

注意:樹狀陣列下標從1開始(下標為0的話會出錯),所以把所有的x加1儲存。

#include#include

#include

using

namespace

std;

#define maxn 32005

#define maxl 15005

intc[maxn];

intlev[maxl];

int lowbit(int

i)void update(int i,int val)

}int sum(int i)

return

sum;

}int

main()

for(i=0;ii)

printf(

"%d\n

",lev[i]);

}return0;

}

view code

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軸座標一定是當前最高的,所以直接對橫座標前求和即可。如下...