Messenger Simulator(樹狀陣列)

2021-10-02 10:39:41 字數 860 閱讀 5050

參考:

題意:給定乙個初始序列1,2,3…,n.m次操作,每次將ai(

1<=a

i<=n

)a_i(1<=a_i<=n)

ai​(

1<=a

i​<=n

)提到第一位,求整個過程中,每個數出現的最左和左右的位置,並輸出。(

1<=n

,m

<=3

e5

)(1<=n,m<=3e5)

(1<=n

,m<=3

e5)題解:模擬,每次提數,將選中的數向前提,被提到的數,則其最左邊是1,最右可以用樹狀陣列字首和計算。

#include

using

namespace std;

#define ll long long

const

int maxn=

300010

;int n,m;

int sum[maxn<<1]

;int l[maxn]

,r[maxn]

;int a[maxn]

,pos[maxn]

;int

lowbit

(int x)

void

update

(int x,

int val)

}int

query

(int x)

intmain()

for(

int i=

1,x;i<=m;i++

)for

(int i=

1;i<=n;i++

)return0;

}

Binary Indexed Tree 樹狀陣列

做leetcode 做到meetingroomii的時候我知道不用線段樹或者樹狀陣列是不太好搞了。還是來學習一下吧。樹狀陣列算是線段樹的一種特殊情況 子集 所以樹狀陣列能解決的問題線段樹一定能做,但線段樹能做的樹狀陣列不一定能做。對乙個陣列進行如下操作 update i1,i2,operation ...

數星星 樹狀陣列

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