AcWing 數星星(線段樹樹狀陣列 模板題)

2021-10-09 09:58:42 字數 815 閱讀 4499

題目鏈結

這道題因為是按照y座標增序給出的,所以前面給出的星星,一定在後面的星星的 "下方」,對於某個星星就判斷前面的星星有多少個的x座標小於等於這個星星,就能判斷這個星星是多少級的

最近在學線段樹,給出線段樹做法的**

#include

const

int n =

1e5+9;

int ans[n]

;using

namespace std;

struct node

tr[n*4]

;void

pushup

(int u)

void

build

(int u,

int l,

int r)

;else

;build

(u<<

1,l,mid)

;build

(u<<1|

1,mid+

1,r)

;//pushup(u);}}

void

modify

(int u,

int x,

int v)

}int

query

(int u,

int l,

int r)

intmain()

for(

int i=

0;i)printf

("%d\n"

,ans[i]);

return0;

}

數星星 樹狀陣列

題目描述 天空中有一些星星,這些星星都在不同的位置,每個星星有個座標。如果乙個星星的左下方 包含正左和正下 有 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 ...