AT_abc273_e

题目:AT_abc273_e

链接:洛谷AT逐月

题意

  • 有空序列 a,另外有 109 个空序列 p1p109,现在执行 q 次操作,包括以下四种操作:

    • ADD x,在序列 a 后插入整数 x
    • DELETE,删除 a 的末尾元素,空则什么都不干。
    • SAVE y,赋值操作,px=a
    • LODE z,将 a 变为 pz
  • 每次操作后输出 a 的末尾元素,没有输出 1

  • 数据范围:1q5×105,1x,y,z109

思路

  • 显然有一个暴力,模拟操作,肯定超时。

  • 首先我们肯定不能把整个序列存下来,但是有些元素删除了,LODE 后可能又恢复了,那该怎么办呢?

  • 我们可以考虑一个树形结构,令 nx 为当前 a 的末尾元素,posy 表示 py 的末尾元素,那么插入元素就是将 fax=nx,nx=x,删除就是 nx=fanx,第三种操作,就是将 posy=nx,最后一种就是 nx=posz

时间复杂度

  • 因为 p 要用 mapO(log109),其他每次均是 O(1)
  • q 组询问,共 O(qlog109)

本文作者:xiehanrui0817

本文链接:https://www.cnblogs.com/xhr0817-blog/p/17435719.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   xiehanrui0817  阅读(20)  评论(0编辑  收藏  举报
加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起