#7195. wwx的兔子打洞计划

0
    ID: 7195 传统题 3000ms 256MiB 尝试: 1 已通过: 1 难度: 5 上传者: 标签>2025提高班模拟赛(23)CSP-SLCA倍增隐式结构

wwx的兔子打洞计划

wwx 的兔子打洞计划

题目描述

wwx 最近养了很多兔子,这天,她想让她的兔子们搬进一个新的洞穴,但是由于兔子太多了,所以得重新开发洞穴使得兔子们都能入住。

wwx 挖了一个初始形态的洞穴,是一棵有着 nn 个节点的树,一开始兔子们都在外面,所以最初整个洞穴都是空的。

接下来 wwx 会安排她的兔子们进行 mm 次操作,操作的种类有 33 种。

1 x:在给定的节点 xx 处进入一只兔子。 注意一个点上可以有多只兔子。

2 x:发出一道号令,让已经进入洞穴的所有兔子从它在的节点出发,挖掘出一个共计 xx 个节点的的菊花洞穴,注意 此处之前已经挖过洞穴的兔子仍然会进行操作,并且挖完洞以后的兔子们都会回到原本的洞穴,新挖出来的菊花洞穴会按照之前兔子进入洞穴的顺序进行标号,对于每一只兔子挖的菊花洞穴,花心洞穴的编号将会排在花瓣洞穴的前面。 例如,当前有 cntcnt 个洞穴中,第 ii 只进入兔子所处节点为 AA ,它挖出的菊花洞穴的花心编号为 cnt+x×(i−1)+1cnt+x \times ( i - 1 ) +1,而花瓣洞穴的编号为 [cnt+x×(i−1)+2,cnt+x×i][cnt + x \times ( i - 1 ) + 2, cnt + x × i],其中节点 AA 会和花心洞穴相连,所有的花瓣洞穴会和花心洞穴相连

3 x y:表示一次查询,询问 xx 号洞穴和 yy 号洞穴的 LCALCA 节点编号。

输入格式

输入共 m+2m + 2 行。 第一行 22 个数 nn,mm,表示初始点数和操作数。 接下来一行 n−1n-1 个数 fa2,fa3...fanfa_2, fa_3...fa_n,表示每个点的父亲。保证任意 i∈[2,n],fai≤ii\in [2,n] ,fa_i\le i 。 接下来 mm 行数表示操作。输入格式为 opti,xiopt_i, x_i,特别的,如果 opti=3opt_i = 3 ,则格式为 opti,xi,yiopt_i, x_i, y_i。两整数之间有一空格隔开。

输出格式

对于每次询问,输出答案。

数据范围

本题一共有16组数据。

test 1 (1个测试点共 7 分 ) :n≤105,∀i∈[1,m],opti=3n\le 10^5,\forall i \in [1,m],opt_i=3。

test 2 ~ 4 (3个测试点共 21 分) :保证最终的点数不超过 10710^7 个。

test 5 ~ 7 (3个测试点共 21 分) : 保证所有的 22 操作均在 11 操作之后

test 8 ~ 10 (3个测试点共 21 分): 保证所有的 33 操作均在所有操作之后

test 11 ~ 16(6个测试点共 30 分): 没有特殊限制。

对于所有数据,n≤5×105,m≤5×105n \le 5 \times 10^5 , m \le 5 \times 10^5

对于任意 opti=2,xi∈[2,106]opt_i = 2, x_i \in [2, 10^6]

对于任意opti=3,x,yopt_i = 3 , x , y 均在 long long 范围内

题目保证数据均合法

样例输入

5 5
1 1 2 2
3 1 2
1 1
1 3
2 4
3 11 7

样例输出

1
1