新高一暑假第一期集訓恢復性訓練【資料結構-線段樹晚測】(補)

Leirt_Abu發表於2024-10-24

新高一暑假第一期集訓恢復性訓練【資料結構-線段樹晚測】(補)


A. [CF1045G] AI robots

我們先按視野降序排序,這樣一個一個考慮,如果後面的能看到前面,那前面的也肯定能看到後面。

這樣,就是對於每一個機器人,在他前面有幾個智商在 \([q-k,q+k]\),位置在 \([x-r,x+r]\)

那麼把這個東西看做一個矩形覆蓋就可以了。

然後因為智商這一維維數很小,我們可以對每一個智商開一個動態開點線段樹,然後一個一個掃過去統計答案就可以了。


B. [CF1000F] One Occurrence

先把詢問離線。

\(i\) 位置的數上次出現的位置是 \(p_i\)(如果第一次出現那就是 \(0\))。

可以想到,用線段樹維護一個區間的 \(p\) 的最小值,如果它小於區間左端點,那這個數就是一個合法的答案。

但直接這樣做是錯的。

考慮 \(1,2,3,4,[1,1],5\),雖然前一個 \(1\)\(p\) 在區間外面,但他後面還有一個 \(1\)

所以可以按照詢問的右端點排序,推著來維護這個最小值。

具體來說,對於 \(i\),先把 \(i\) 位置的值改成 \(p_i\),然後如果有 \(p_i\),那把 \(p_i\) 位置的值改成 \(+ \infty\)(一開始都要初始化成 \(+ \infty\)) 。

然後再詢問的話,查到的就都是這個區間裡的最後一次出現的那個數了,就不會GG。


相關文章