CF833E
跟 CF1889C1
很像。
多次询问,我们考虑将每个段的端点标记,将值域分成若干个段。
我们如果可以求出前缀段通过删除能得到的最多空点个数,由于每一段要么全空,要么全被覆盖,所以我们可以二分从而求出答案。
扫描线,找到被覆盖 的段,维护到每段区间末尾为止空点的长度 ,删除至多两个区间后最多空点数 ,只被第 个区间覆盖的长度 ,则 ,其中 是这个前缀最多能通过删区间得到多少额外的长度。
删除一个区间的情况不说。
考虑删除两个区间的情况:
- 存在被这两个区间覆盖的段,只有 个,我们记录只被这两个区间覆盖的长度 ,其中 的 可以贡献, 记录 ,在 更新时, 可以贡献。
- 否则, 的 可以贡献,树状数组维护前缀
max
即可。
分类讨论一段被覆盖的情况,首先得满足被 条线段覆盖:
- 被 个区间覆盖,。
- 被 个区间覆盖,更新 ,更新上面两部分的贡献。
- 被 个区间覆盖,更新上面第二部分的贡献。
时间复杂度 。
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18121914