【題解】「CF765F」Souvenirs

CloudWings發表於2024-10-04

https://www.luogu.com.cn/problem/CF765F

首先有一個比較 navie 的 \(O(n\sqrt m\log n)\) 的做法(adddel 的時候,用兩個 multiset 維護一下。

有一個 bitset 的做法來最佳化用 multiset 查詢前驅後繼的做法:https://www.luogu.com.cn/article/zcmco6hd


首先考慮離線下來,將詢問掛在左端點,從左到右列舉左端點的時候就需要刪除貢獻。

然後,每次肯定只能區間排序之後相鄰兩個元素對答案有貢獻。


https://www.luogu.com.cn/article/6l487c0y

其實主要步驟是下面這三個。

  1. \(|a_j-a_i|\Rightarrow a_j-a_i\vee a_i-a_j\),所以只考慮 \(j<i,a_j\ge a_i\) 的答案。

    這樣去掉了絕對值,才可以有後面用不等式來框定範圍的時候,能夠被化簡。

  2. 離線,將詢問掛在右端點。

    這樣的話,不再是刪貢獻,而是加貢獻,由於這是取 min,顯然比掛在左端點好做的多。

    所以,現在只用考慮右端點固定的情況。

  3. \(a_{j^{\prime}}-a_{i}<a_{j}-a_{j^{\prime}}\)

    (實際上出發點和我自己那個,排序後相鄰兩個元素的出發點是一樣的:都是為了減小 \(i,j\) 列舉的規模。