1 条题解

  • 0
    @ 2025-8-24 22:01:26

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar EndSaH
    我将凋零,凋零在这片我爱的土地。

    搬运于2025-08-24 22:01:26,当前版本为作者最后更新于2019-02-12 12:38:51,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    日常安利博客

    Foreword\text{Foreword}

    这里不是正解!!! 这里不是正解!!!

    虽说如此,截止到此篇题解发出时间,我的程序仍是最优解第一。并且拉了原先第一还不少

    其实原本只是想试试能不能过掉[NOI2003]文本编辑器的,过了之后听同学说这边有个带翻转加强版,于是就来试了试...

    然后就A了?然后就最优解第一???

    满脸问号.jpg

    Solution\text{Solution}

    题意就不解释了...赤裸裸的数据结构

    你可以尝试各类操作,比如 Splay、FHQ\text{Splay、FHQ}、块状链表\cdots

    这些我都不再赘述,前面也有人讲了。

    但如果真的到了考场上,这些复杂又难调的数据结构无疑会耗费大量的时间。

    再认真的看看数据范围:

    MOVE\text{MOVE} 操作不超过 5000050000 个,INSERT, DELETE, ROTATE\text{INSERT, DELETE, ROTATE} 操作的总个数不超过 60006000GET\text{GET} 操作不超过 2000020000 个, PREV, NEXT\text{PREV, NEXT} 操作的总个数不超过 2000020000

    暴力,真的就会 TLE\text{TLE} 吗?

    如果开启 O2O_2vector\text{vector} 带来的极致速度,还是值得我们一试的。

    其实最重要的还是,太好码了

    记当前光标位置为 pospos,当前文本为 TT,临时文本为 temptemp。那么各个操作分别为:

    Move k\text{Move}\ kpos = k;

    Insert n s\text{Insert}\ n\ s:将 ss 每个字符依次读入放入 temptemp,然后T.insert(T.begin() + pos, temp.begin(), temp.end());

    Delete n\text{Delete}\ nT.erase(T.begin() + pos, T.begin() + pos + n);

    Rotate n\text{Rotate}\ nstd::reverse(T.begin() + pos, T.begin() + pos + n);

    Get\text{Get}putchar(T[pos]);

    Prev\text{Prev}--pos;

    Next\text{Next}++pos;

    有没有直观感受到码量?

    于是花 20min\text{20min} 时间码完之后,我满怀着希望一交...

    ...当然是因为细节问题爆零了- -(因用了assert,全部 RE\text{RE}

    想详见细节怎么处理的,请看代码(在下面)- -

    Code\Huge\text{Code}

    Thanks for your consideration!\text{Thanks for your consideration!}

    • 1

    信息

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