LOJ10114 數星星 樹狀陣列

2022-01-19 15:50:16 字數 711 閱讀 1396

解析:由於座標是按y遞增排序,所以對於乙個點來講,只看之前x小於等於它的就可以了。那麼對於輸入的每個點,求之前x小於等於它的,就得用樹狀陣列維護。樹狀陣列c[i]表示x=i時,它之前x小於等於它的有幾個點。個數就是級數,num來記錄。x+1防止死迴圈

#include#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=32001

;int

num[maxn];

intc[maxn];

int lowbit(int

i)void update(int

x)int getsum(int

x)

return

sum;

}int

main()

for(int i=0;i)

cout

}

數星星 樹狀陣列

題目描述 天空中有一些星星,這些星星都在不同的位置,每個星星有個座標。如果乙個星星的左下方 包含正左和正下 有 k 顆星星,就說這顆星星是 k 級的。例如,上圖中星星 5 是 3 級的 1,2,4 在它左下 星星 2,4 是 1 級的。例圖中有 1 個 0 級,2 個 1 級,1 個 2 級,1 個...

數星星(樹狀陣列)

天空中有一些星星,這些星星都在不同的位置,每個星星有個座標。如果乙個星星的左下方 包含正左和正下 有 k 顆星星,就說這顆星星是 k 級的。例如,上圖中星星 5 是 3 級的 1,2,4 在它左下 星星 2,4 是 1 級的。例圖中有 1 個 0 級,2 個 1 級,1 個 2 級,1 個 3 級的...

1265 數星星 樹狀陣列

思路 因為給定的座標已經按照縱座標排好序了,那麼對於每個點 x,y 它是第幾層取決於它左下部有多少個點,因為他的縱座標是最大的,那麼我們就利用樹狀陣列求出字首和s 每次在x位置處,單點修改此點的值 1 即第s層的星星數 1。再把這個點放入樹狀陣列中即可。include include define ...