【题解】「CF765F」Souvenirs

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\) 枚举的规模。

posted @ 2024-10-04 10:29  CloudWings  阅读(17)  评论(0编辑  收藏  举报