鸽子的彩灯

考虑暴力做法:从后往前加入彩灯,并将包含这个灯的询问电流加上 cic_i,然后将电流 >si>s_i 的询问删除。

发现,若一个大的询问区间包含小的询问区间,则这个询问的答案不小于小的询问答案。

于是我们可以考虑先计算大区间的询问答案,则区间不存在包含关系,l,rl,r 单增,那么包含 pip_i 的考虑区间在排序后是一段区间,可以数据结构维护区间加,区间 max

每次找到电流最大的区间,若 >si>s_i 就删除,然后加入被其包含的小区间,加入的区间先前的贡献也可以简单维护。

加入时,找到右端点在一段区间内最小的左端点,数据结构维护。

时间复杂度 O(nlogn)\mathcal O(n\log n)

posted @ 2024-02-11 12:29  蒟蒻orz  阅读(7)  评论(0编辑  收藏  举报  来源