1 条题解

  • 0
    @ 2025-10-26 0:15:20

    核心思路

    主席树 + 贪心选择

    问题转化

    • 原序列由交替的 11 块和 00 块组成
    • kk-近似序列要求翻转次数 k\leq k 时最大化 11 的数量
    • 等价于选择一些 11 块,块间用 00 块分隔,总切换次数不超过 kk

    重要公式

    1. 切换次数与块选择

    选择 mm11 块时,切换次数为:

    切换次数=2m2+δ\text{切换次数} = 2m - 2 + \delta

    其中 δ\delta 取决于首尾块是否为 11

    2. 最大和计算

    对于区间 [l,r][l,r],最大和为:

    $$\max_{S \subseteq \text{候选1块}} \left\{ \sum_{i \in S} \text{len}_i \right\} $$

    满足切换次数约束

    3. 贪心策略

    • 优先选择长度大的 11
    • 用主席树维护 11 块长度,支持前 kk 大和查询
    • 考虑边界情况:区间可能只覆盖块的一部分

    算法框架

    1. 预处理

      • 记录每个块的起止位置
      • 11 块长度建立主席树(按长度排序)
    2. 查询处理

      • 定位 l,rl,r 所在的块
      • 处理完全包含在单个块内的情况
      • 否则收集边界部分块,枚举边界选择方案
      • 对内部完整 11 块,用主席树查询前 k/2\lfloor k/2 \rfloor 大和
    3. 组合答案

      • 枚举边界块的选择状态
      • 剩余切换次数分配给内部块
      • 取所有情况的最大值

    关键优化

    • 主席树 O(logn)O(\log n) 查询前 kk 大和
    • 边界情况枚举(常数大小)
    • 切换次数与选择块数的线性关系
    • 1

    信息

    ID
    4139
    时间
    2500ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    10
    已通过
    1
    上传者