1 条题解

  • 0
    @ 2026-9-3 10:33:40

    题解

    思路

    平方函数鼓励把选择集中到同一列。对一组端点都在 [l,r][l,r] 内的区间,可以钦定优先级最高的一列 kk,让所有经过 kk 的区间都选择 kk;其余区间完全落在左右两侧,形成两个独立子问题。

    做法

    子任务 1:枚举选点

    递归枚举每个输入区间选择的列,维护各列数量并计算质量,取最大值。

    子任务 2:直接统计区间 DP

    设 fl,rf_{l,r} 为只考虑端点均在 [l,r][l,r] 中的输入区间时的最大质量。枚举最高优先级列 kk,再扫描全部输入区间,统计端点在 [l,r][l,r] 且经过 kk 的区间数 cc:

    $$f_{l,r}=\max_{k=l}^{r}\{f_{l,k-1}+c^2+f_{k+1,r}\}.$$

    子任务 3:二维前缀和

    令 bx,yb_{x,y} 为输入中区间 [x,y][x,y] 的数量。固定 l,r,kl,r,k 时,所需的 cc 是

    ∑x=lk∑y=krbx,y,\sum_{x=l}^{k}\sum_{y=k}^{r}b_{x,y},

    这是二维矩形和,可在预处理二维前缀和后 O(1)O(1) 求出。再按区间长度递增完成上述 DP。

    复杂度

    满分算法时间复杂度 O(nm+m3)O(nm+m^3),空间复杂度 O(m2)O(m^2)。

    • 1

    信息

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