1 solutions

  • 0
    @ 2025-8-15 14:31:19

    题意 给定n, k, 构造一个长度为n的序列,使得下面的式子的值最大,并且加起来小于等于k,最大能取到多少 i=1nj=i+1na[i]a[j]\sum_{i=1}^{n} \sum_{j=i+1}^{n} |a[i] - a[j]| 注意到上面的式子跟序列的排列没有任何关系,每一位的贡献只需考虑有多少数大于或者小于等于它 然后我们假设构造一个非递减数列。 可以每次往一个后缀+1+1 当往i+1i+1的后缀+1+1时,对答案的贡献是 i(ni)i * (n - i) 即转化成了完全背包问题,用 i(ni)i * (n - i) 填满大小为 kk 的背包。 可以注意到k的值只有 10510^5,猜一下 i(ni)i * (n - i) 小于等于 10510^5 的情况最多只有 sqrtsqrt 个 可以通过 i(ni)<105i * (n - i) < 10^5i2ni+105>=0i^2 - ni + 10^5 >= 0 向上的抛物线,当判定式小于0,即无交点时,全部i都满足重量小于等于10^5,此时 nn(400000)\sqrt(400000) 判别式大于 00 时有交点 超重的索引 ii在两根之间,即 sqrt(n2400000)sqrt(n^2 - 400000) 没超重的就是 nsqrt(n2400000)n - sqrt(n^2 - 400000) 注意在 n+1n+1 时,后者加的更多,所以恰好 nn 超过判别式时最大,取得两种情况的最大值只有 600600 多左右 600105600 * 10^5 足够通过此题

    Information

    ID
    34
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    (None)
    # Submissions
    23
    Accepted
    5
    Uploaded By