牛客寒假集訓營第三場E線段樹 鍊錶

2021-10-19 07:02:13 字數 1598 閱讀 2144

題目

題目鏈結 有n

nn個禮物,每個禮物都有乙個編號,有兩種操作: 題解

對於每個位置i

ii,維護兩個資訊:

l as

t[i]

last[i]

last[i

]

ia_i

ai​的位置,如果沒有置為000n

ext[

i]

next[i]

next[i

]

ia_i

ai​的位置,如果沒有置為n+1

n+1n+

1 這樣,就形成了乙個鍊錶式的結構。

**

/*

* @author: hesorchen

* @date: 2020-07-19 17:00:02

* @lastedittime: 2021-02-06 16:34:36

* @description: 栽種絕處的花

*/#include

using

namespace std;

int a[

500010];

int last[

500010];

int nxt[

500010];

unordered_map<

int,

int> mp;

struct node

tr[500010

<<2]

;void

pushup

(int k)

void

build

(int k,

int l,

int r)

int mid = l + r >>1;

build

(k *

2, l, mid)

;build

(k *2+

1, mid +

1, r)

;pushup

(k);

}void

change

(int k,

int pos,

int w)

int mid = tr[k]

.l + tr[k]

.r >>1;

if(pos <= mid)

change

(k *

2, pos, w)

;else

change

(k *2+

1, pos, w)

;pushup

(k);

}int

query

(int k,

int l,

int r)

intmain()

else

} mp.

clear()

;for

(int i = n; i >=

1; i--

)else

}build(1

,1, n)

;while

(q--

)else

}return0;

}

牛客寒假集訓營第三場

題目 c題暴力搜尋 include using namespace std int n,k,r,ans struct ty a 20 pos 10 bool xiangjiao int i,int j intcalc return cnt void dfs int dep for int i 7 i...

2023年牛客寒假集訓營第三場 買禮物

powered by nefu ab in 更新線段樹的三個板子 題意 查詢乙個區間內是否有相同的兩個數 可以動態將某個數剔除掉 知識點 線段樹 鍊錶 思路 include using namespace std define ll long long define ull unsigned lon...

牛客寒假訓練營2020 第三場B

乙個圖上一直可以到達終點的方案數,畫出乙個符合這個方案數的圖 數字都可以用二進位制數表示,1e9 230,可以用30位二進位制數表示。所以要在圖中想辦法融入二進位制的思維,可以用邊來表示二進位制的一位。先將對角線都設為b,b有兩種方向,可看作二進位制中的 1 到達第乙個b有1種可能性,到達第二個b有...