1 条题解

  • 0
    @ 2025-8-24 23:16:48

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Undead2008

    搬运于2025-08-24 23:16:48,当前版本为作者最后更新于2025-05-25 22:46:49,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    假设路径经过的每一条边依次为从上一个点 xx 走到 3x+bi+13x+b_i+1,将经过的 aia_i(去掉 a0a_0)和 bib_i 依次写成序列,容易发现:

    bi=j=1i3ijajb_i=\sum_{j=1}^i 3^{i-j}a_{j}

    现在要 bi=k\sum b_i=k,就是

    i=1dj=1i3ijaj=k\sum_{i=1}^d \sum_{j=1}^i 3^{i-j}a_{j}=k i=0d13i×j=1diaj=k\sum_{i=0}^{d-1}3^i\times\sum_{j=1}^{d-i} a_j=k

    aa 的前缀和为 ss,即有

    i=0d13isdi\sum_{i=0}^{d-1}3^is_{d-i}

    但是 aass 都未知,需要计数方案,考虑 dp。

    fi,j,kf_{i,j,k} 表示当前 dp 到 iisdi=js_{d-i}=ji1i-1 向当前位进位 kk 的方案数,注意到 sdi+1sdi{0,1,2}s_{d-i+1}-s_{d-i}\in\{0,1,2\} 所以一个状态的后继状态个数为 O(1)O(1)

    状态 O(n3)O(n^3),转移 O(1)O(1),时间复杂度 O(n3)O(n^3)

    注意到对于一组 (i,j)(i,j),满足 fi,j,kf_{i,j,k} 非零的 kk 的数量是 O(1)O(1) 个,所以状态数其实是 O(n2)O(n^2) 的,拿 umap 或者 vector 存一下就行了,时间 O(n2)O(n^2)

    • 1

    信息

    ID
    10757
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者