#P5889. 跳树

    ID: 4810 远端评测题 1300ms 125MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>2020线段树O2优化哈希HASH洛谷月赛

跳树

题目背景

兔子喜欢跳树。

题目描述

一天,兔子在一棵点数为 2n12^n-1 完全二叉树上的一个结点上,他准备进行若干次如下的跳跃。

  • 跳到这个点的左儿子,保证这个点有左儿子。
  • 跳到这个点的右儿子,保证这个点有右儿子。
  • 跳到这个点的父亲,若这个点是根,无视此操作

其中,ii 号点要么没有儿子,要么有左儿子 2×i2 \times i 和右儿子 2×i+12 \times i + 1

兔子会计划性地跳树,他写下了一个长度为 mm 的序列 opopopop 中的每个数都是 11, 22, 33 中的一种。操作 ii 对应从上到下第 ii 种跳跃方式。

每次,兔子会选择一段区间 [l,r][l,r],依次进行跳跃 opl,opl+1,,oprop_l,op_{l+1},\ldots,op_r

有时兔子会对一个点的 opop 值进行修改。

现在你需要求出兔子每次会跳到哪个结点。

阅读样例解释可以对题意获得更好的理解。

输入格式

第一行三个整数 n,m,qn, m, q,表示树的大小的幂次、opop 的长度、操作的次数。

第二行包含 mm 个整数 op1,2,,mop_{1,2,\ldots,m},表示序列的初值。

接下来 qq 行,每行一个整数 typetype,若 typetype11,接下来三个整数 s,l,rs,l,r,描述起点和进行跳跃的区间;若 typetype22 ,接下来两个整数 x,yx,y,描述修改的位置与值。

输出格式

对于每一个 type=1type=1,输出一个数,表示跳跃到的结点。

3 5 4
1 2 3 3 1
1 3 4 5
1 2 2 4
2 3 1
1 1 2 3
2
1
6

提示

其中红边为第一次跳跃的路径,蓝边为第二次,绿边为第三次。

所有测试数据的范围和特点如下表所示:

对于 100%100\% 的数据,1n301\leq n \leq 301m,q5×1051\leq m,q \leq 5 \times 10^51opi31\leq op_i\leq 3