luogu P5055 【模板】可持久化文艺平衡树

↘锁芯ラ 提交于 2019-11-29 04:56:48

题目背景

这是一道模板题。

题目描述

您需要写一种数据结构,来维护一个序列,其中需要提供以下操作(对于各个以往的历史版本):

  1. 在第 pp 个数后插入数 xx 。
  2. 删除第 pp 个数。
  3. 翻转区间 [l,r][l,r],例如原序列是 \{5,4,3,2,1\}{5,4,3,2,1},翻转区间 [2,4][2,4] 后,结果是 \{5,2,3,4,1\}{5,2,3,4,1}。
  4. 查询区间 [l,r][l,r] 中所有数的和。

和原本平衡树不同的一点是,每一次的任何操作都是基于某一个历史版本,同时生成一个新的版本(操作 44即保持原版本无变化),新版本即编号为此次操作的序号。

本题强制在线。

输入格式

第一行包含一个正整数 NN,表示操作的总数。

接下来 NN 行,每行前两个整数 v_i,opt_ivi,optiv_ivi 表示基于的过去版本号 (0\le v_i<i)(0vi<i),opt_iopti 表示操作的序号 (1\le opt_i\le 4)(1opti4)。

若 opt_i=1opti=1,则接下来两个整数 p_i,x_ipi,xi,表示操作为在第 p_ipi 个数后插入数 xx 。
若 opt_i=2opti=2,则接下来一个整数 p_ipi,表示操作为删除第 p_ipi 个数。
若 opt_i=3opti=3,则接下来两个整数 l_i,r_ili,ri,表示操作为翻转区间 [l_i,r_i][li,ri]。
若 opt_i=4opti

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!