1 solutions

  • 0
    @ 2023-8-6 20:17:01

    每次询问,我们通过二分答案+前缀和加速,可以做到O(logn)O(\log n)。总复杂度为O(nlogn)O(n\log n),空间复杂度O(n)O(n)

    具体操作是,当询问至aia_i时,根据贪心的思想,显然有先将ai1a_{i-1}ai+1a_{i+1}合并至aia_i,然后将ai2a_{i-2}ai+2a_{i+2}合并至aia_i……以此类推。我们可以二分这个答案:当我们合并至[ik,i+k][i-k,i+k]区间时,操作次数尚有富裕、但[ik1,i+k+1][i-k-1,i+k+1]时就操作次数不足了。然后我们可以O(1)O(1)求出剩余操作次数带来的收益。

    在二分时,最关键的一点是如何O(1)O(1)计算出[ik,i+k][i-k,i+k]区间的操作次数。这里可以用两个不同的前缀和数组进行数学转换求出,一个是aia_i的前缀和,另一个是aiia_i*i的前缀和。注意我们计算右边和左边要分开来算(左边需要利用aia_i的前缀和以及ai(ni+1)a_i*(n-i+1)的前缀和)。

    • 1

    Information

    ID
    8
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    (None)
    # Submissions
    62
    Accepted
    11
    Uploaded By