#P7982. [JRKSJ R3] 琴琴的树

    ID: 9018 远端评测题 1500ms 512MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>2021洛谷原创后缀自动机 SAMO2优化后缀数组 SA

[JRKSJ R3] 琴琴的树

题目描述

琴琴有一棵二叉树,满足:

  • 该树有无穷多个结点。
  • 每个结点都有编号和权值。初始所有结点的权值为 00。
  • 树根的编号为 11。
  • 若一个结点的编号为 ii,则该结点的左右儿子的编号分别是 2i,2i+12i,2i+1。

琴琴要对树进行共 mm 次操作,每次操作是二者之一:

  1. 将编号为 xx 的结点为根的子树中的每个结点的权值都加 vv。
  2. 求树上编号为 xx 的结点到编号为 yy 的结点的路径上每个结点的权值和。答案对 2322^{32} 取模。

不过琴琴不会直接给出 x,yx,y。她再给出一个长度为 nn 的 0101 序列 aa,每次给出 xx 或 yy 时给出一个区间 [lx,rx][l_x,r_x] 或 [ly,ry][l_y,r_y],这个数就是将这个区间视作二进制数的值。

输入格式

第一行两个整数 n,mn,m。
第二行一个长度为 nn 的字符串表示 aa。保证字符串中只包含 0 和 1。
下面 mm 行,每行一个操作编号,然后是操作。操作的格式为:

  1.  lx rx v\ l_x\ r_x\ v
  2.  lx rx ly ry\ l_x\ r_x\ l_y\ r_y

输出格式

对于每个操作 22,每行一个整数表示答案。

5 5
01010
1 4 5 5
2 1 3 2 5
1 2 3 3
2 1 5 1 2
2 3 4 4 5
15
24
8

提示

样例解释

该树的前四层如图所示:

第一个操作:将以 22 为根的子树中的结点权值加上 55。
第二个操作:求 2→102\rightarrow 10 的路径上的点的权值和。
第三个操作:将以 22 为根的子树中的结点权值加上 33。
第四个操作:求 10→110\rightarrow 1 的路径上的点的权值和。
第五个操作:求 1→21\rightarrow 2 的路径上的点的权值和。

数据规模与约定

本题采用捆绑测试。

Subtask\text{Subtask} n≤n\le m≤m\le 分值
11 1010 10310^3 55
22 2020 10510^5
33 10410^4 2020
44 4×1054\times 10^5 7070

对于 100%100\% 的数据,1≤n,m≤4×1051\le n,m\le 4\times 10^5,1≤v≤1091\le v \le 10^9,1≤lx≤rx≤n1\le l_x\le r_x\le n,1≤ly≤ry≤n1\le l_y\le r_y\le n,保证 x,y≠0x,y\ne 0。