1 条题解

  • 0
    @ 2026-9-3 10:30:57

    题解

    思路

    将数组排序不改变所有下标子集的集合。对于非负整数随机变量,有“层蛋糕”恒等式:所有子序列美丽值之和等于,对每个 d≥1d\ge1,美丽值至少为 dd 的长度 kk 子序列数量之和。

    固定 dd。排序后选出的下标 p1<p2<⋯<pkp_1<p_2<\cdots<p_k 合法,当且仅当每一对相邻选中值满足

    apt−apt−1≥d.a_{p_t}-a_{p_{t-1}}\ge d.

    令 f[c][i]f[c][i] 为选择 cc 个数且最后一个数为 aia_i 的方案数。转移来源是所有满足 aj≤ai−da_j\le a_i-d 的 j<ij<i,它们构成前缀。

    做法

    对每个 d=1,2,…,⌊(an−a1)/(k−1)⌋d=1,2,\ldots,\lfloor(a_n-a_1)/(k-1)\rfloor 做一次动态规划。对上一层 DP 维护前缀和,并用单调指针找出每个 ii 可转移前缀的右端点,于是每层为 O(n)O(n)。

    若 d(k−1)>an−a1d(k-1)>a_n-a_1,不可能选出 kk 个两两相邻差至少为 dd 的值,因此无需继续枚举。

    子任务 1 可直接枚举所有大小为 kk 的下标集合;子任务 2 可在固定 dd 时显式枚举最后两个下标做二次转移。

    复杂度

    设值域跨度为 V=an−a1V=a_n-a_1。时间复杂度为

    O ⁣(Vk−1⋅nk)=O(Vn),O\!\left(\frac{V}{k-1}\cdot nk\right)=O(Vn),

    空间复杂度为 O(n)O(n)。

    • 1

    信息

    ID
    1221
    时间
    5000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者