CF833E
跟 CF1889C1
很像。
多次询问,我们考虑将每个段的端点标记,将值域分成若干个段。
我们如果可以求出前缀段通过删除能得到的最多空点个数,由于每一段要么全空,要么全被覆盖,所以我们可以二分从而求出答案。
扫描线,找到被覆盖 的段,维护到每段区间末尾为止空点的长度 ,删除至多两个区间后最多空点数 ,只被第 个区间覆盖的长度 ,则 ,其中 是这个前缀最多能通过删区间得到多少额外的长度。
删除一个区间的情况不说。
考虑删除两个区间的情况:
- 存在被这两个区间覆盖的段,只有 个,我们记录只被这两个区间覆盖的长度 ,其中 的 可以贡献, 记录 ,在 更新时, 可以贡献。
- 否则, 的 可以贡献,树状数组维护前缀
max
即可。
分类讨论一段被覆盖的情况,首先得满足被 条线段覆盖:
- 被 个区间覆盖,。
- 被 个区间覆盖,更新 ,更新上面两部分的贡献。
- 被 个区间覆盖,更新上面第二部分的贡献。
时间复杂度 。
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18121914
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
2021-11-05 CF706D Vasiliy's Multiset