1 条题解

  • 0
    @ 2025-8-24 22:46:08

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar HyB_Capricornus
    黄梅时节家家A,青草池塘处处WA,有WA不A过夜半,闲切红题冒火花

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

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

    以下是正文


    还没有人发题解,我来一发。

    Sol

    设原序列为 BB

    令操作 CC 为将 BA1B_{A_1} 挪至 BA2B_{A_2},将 BA2B_{A_2} 挪至 BA3B_{A_3}\ldots,将 BAnB_{A_n} 挪至 BA1B_{A_1}

    令操作 x-x 为将序列逆时针转 xx 次,即 B1B2B_1 \to B_2B2B3B_2 \to B_3\ldotsBnB1B_n \to B_1

    令操作 +x+x 为将序列顺时针转 xx 次。

    重点来了:

    我们可以把将 AA 向后挪再进行 CC 操作想成先将 BB 逆时针转 11 次,然后进行 CC 操作,然后再顺时针转回去

    当然每次转的次数不同,例如进行两次将 AA 向后挪再进行 CC 操作,我们就需要逆时针转 22 次,然后进行 CC 操作,然后再顺时针转回去

    则操作为:

    C,1,C,+1,2,C,+2,3,C,+3,,(n1),C,n1C,-1,C,+1,-2,C,+2,-3,C,+3,\ldots,-(n-1),C,n-1

    其中 ++- 可以抵消,抵消后结果为:

    C,1,C,1,C,1,,C,1,C,n1C,-1,C,-1,C,-1,\ldots,C,-1,C,n-1 C,1,C,1,C,1,,C,1,C,1,nC,-1,C,-1,C,-1,\ldots,C,-1,C,-1,n

    我们称 C,1C,-1DD 操作

    我们创建数组 jmp[i][j]jmp[i][j],其中 jmp[i][j]=djmp[i][j]=d 表示进行 2j2^jDD 操作把 bib_i 挪到了 dd 位置。

    通过倍增,原始暴力的复杂度 O(nT)O(nT) 成功优化到 O(nlog2T)O(n\log_{2}{T}),复杂度显然可以通过本题。

    最后不要忘了顺时针转 nn 次,这道题目就做出来了。

    代码

    一些忠告:

    1. 最后不要忘了顺时针转 nn 次。
    2. 本人代码 3131 行,yy 很大,需要取模,否则会变成负数(赛时被卡)。
    3. 请不要抄题解。
    • 1

    信息

    ID
    8557
    时间
    4000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者