1 条题解

  • 0
    @ 2026-9-9 8:54:46

    题解

    思路

    因为所有元素均为正数,对一个固定区间求 ff 时,最优策略一定是从左向右让当前段尽量长。

    做法

    对每个位置 ii,令 pip_i 为最小的、使 Ai+Ai+1+⋯+Api>SA_i+A_{i+1}+\cdots+A_{p_i}>S 的位置;若不存在则令 pi=N+1p_i=N+1。再令 dpi=∑r=iNf(A[i,r])dp_i=\sum_{r=i}^{N}f(A[i,r])。当 r<pir<p_i 时整个区间只需一段;当 r≥pir\ge p_i 时,第一段必为 [i,pi−1][i,p_i-1],余下部分等价于从 pip_i 开始。因此有 dpi=dppi+N+1−idp_i=dp_{p_i}+N+1-i。

    从右向左计算 dpdp 即可。由于元素为正,随着左端点右移,满足区间和不超过 SS 的最大右端点也只会右移,所以用双指针在线性时间内求出全部 pip_i。

    复杂度

    最后累加所有 dpidp_i,时间复杂度为 O(N)O(N),空间复杂度为 O(N)O(N)。

    • 1

    信息

    ID
    1530
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者