本题有四个操作:I,Q,R,M
I,Q 操作是经典的平衡树操作,需要再平衡树的每个节点维护:
cnt(node)=∑[hi>hi+1]
ans(node)=∑(R−i)×[hi>hi+1]
并通过 cnt 和 ans 计算答案贡献。
思考怎么维护这两个操作就已经具备紫题的难度了。
若加上 R 操作,还需要加上文艺平衡树的翻转操作,码量和出错率都大大增加,足以有上位紫的难度。
但 M 操作才是最恶心的,在平衡树中插入一个历史版本,点的个数会以倍增的速度增长,可以达到 long long 数量级,普通的平衡树再也无能为力,必须要用可持久化平衡树,每次复制一个序列都需要动态开点,让码量再次翻倍。
思路或许相对比较容易理解,但实现起来难写且难调,应该有省选以上的难度,建议评黑。