1 条题解

  • 0
    @ 2025-8-24 21:49:26

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar kczno1
    **

    搬运于2025-08-24 21:49:26,当前版本为作者最后更新于2017-03-02 16:11:26,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    用p(l,r)表示区间[l,r]的最长前缀的右端点,

    s(l,r)表示后缀的左端点。

    用hash(l,r)表示区间[l,r]的状态。

    那么hash(l,r)必须包含hash(l,p(l,r)),hash(s(l,r),r),以及W(l,r)。

    考虑到hash(s(l,r),r)已经包含W(s(l,r),r)的状态,

    我们只用新加入(s(l,r),r)少掉的那个状态即可。

    假设包含x个元素。

    那么p(l,r)就是以l为左端点,包含了x-1个元素且右边是第x个元素的右端点。

    s(l,r)同理。

    所以就可以dp了。

    由于数字范围是[1,100],所以最多只有n*100个状态。

    再滚动数组优化空间即可。

    • 1

    信息

    ID
    2558
    时间
    4000ms
    内存
    125MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者