CF765F Souvenirs 发表于 2025-02-27 更新于 2025-02-26 分类于 算法竞赛 , 题 , Codeforces 阅读次数: 题意:给出一个长度为 的序列 。 次询问一个区间内差值最小的对子。 ,,时限。 考虑扫描线:向右逐步移动右端点,维护每个左端点对应的答案。 为了方便我们只考虑顺序对的答案,将值域取反重做即可得到正确答案。 当在右侧加入数 时: 对于前面的某个数 若 则数对 可以对区间 产生贡献。 考虑 的某个数 , 比 更优的条件 。 与此同时,考虑到 的贡献,还有 。 化简可得 。 综上可得必要条件 。 不难发现,每次产生可能有效的 ,都会使得这个区间减半。 查询第一个满足条件的 等价于如下问题:值域区间内的位置前继。 可以使用主席树维护。 总复杂度 。