1 条题解

  • 0
    @ 2025-8-24 21:32:04

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar kkksc03
    洛谷吉祥物 DA✩ZE

    搬运于2025-08-24 21:32:04,当前版本为作者最后更新于2013-12-07 22:19:23,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    由于题目具有无后效性,所以想到用DP来解决。

    我们令f[i]表示打破前i层封印消耗元气的最小值,则状态转移方程如下:

    f[i]=max⁡{f[i−1]+a[i]*n^2,f[k]+(a[k+1]+a[i])*sum(k+1,i)|0<k+1<i,a[k+1]+a[i]≤k}

    状态转移方程写好后,问题在于求sum(k+1,i)时如果遍历一遍需要O(n)的复杂度。这样总复杂度为k(n^3),50-70分。

    这个复杂度可以用预处理前缀和的方法来优化。用S[i]表示从a[1]到a[i]的

    总和,则sum(k+1,i)=S[i]-S[k]。这样总复杂度为k(n^2),可以通过所有测试点。

    • 1

    信息

    ID
    901
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者