[Mivik的萌新赛][T3 Mivik的神力] 题解
我并没有神力ww
- 20 pts.
直接暴力。
时间复杂度
- 90 pts.
读入时用单调栈记录每一个点后面第一个比他大的数的位置(记为
时间复杂度
出题人:是我少出了单调递增的数据点卡你们
- 90 pts.
PLUS
观察到这个序列是不变的,因此我们预先倍增处理一个点往后“跳跃”
时间复杂度
- 100 pts.
我们来观察一个区间。我们从这个区间的左端点开始“跳跃”统计,我们将在哪一个点结束呢?
没错。我们将会在这个区间最左侧最大值的位置结束。我们可以用一个ST表来维护区间最大值的位置
然后我们来观察我们这个“跳跃”的路径,由于每一个点有且只有一个“跳跃”的目标,因此不能看出这是一个树形结构
综上所述,我们现在知道了树上的起始点和结束点,那么这个题就被转化为树上求两点之间距离的板子题了
又由于本题的特殊情况,我们的结束点必定是起始点的祖先,因此我们仅仅需要一个
举个例子
我们现在有一个序列
我们把每一个点的
这是假如我们想要查询
时间复杂度
代码