卧薪尝胆,厚积薄发。
Date: Wed Feb 27 08:32:05 CST 2019 In Category: NoCategory

Description:

给出一棵任意形态的线段树,每次支持:对一个点进行左/右旋、询问一个区间会定位到多少个节点。
$1\leqslant n\leqslant 10^6$

Solution:

首先根据线段树的知识我们先找到包含这个区间的最小的线段树上的区间,找的方法就是询问区间跨过原区间中点的最高的那个原区间,也就是区间左端点和区间右端点的 $LCA$ ,然后思考一下会发现中点左右两边分别是一个前缀和一个后缀,假设现在在处理前缀,根据线段树的性质我们可以找到深度最低的左端点也是前缀端点的区间,然后还要对每个点预处理一个什么东西表示查询的时候下一个区间是哪个,然后可以在这棵树上求一下它到第一次找到的那个区间上的距离,左右旋就修改常数个区间就行了。

Code:


没有代码
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡