A6595. 「SDOI / SXOI2022」无处存储
编程题
NOI/NOI+/CTSC
知识点
题目描述
小 Ω 想出一个数据结构题,于是它先造了一棵点有点权的树:
给定一棵大小为 $n$ 的树,编号 $1$ 到 $n$,第 $i \in [2,n]$ 个点的父节点记作 $f_i \in [1, i-1]$。另外,每个点 $i$ 有一个点权 $a_i$,初始点权由输入确定,具体方式见输入格式。
在数据结构题里面,需要有对应的修改和查询的操作,而树上最简单的两种非平凡操作当然是链加、链求和了。
因此你需要支持以下两种操作:
``
``
出完之后小 Ω 拿给小 N 看,小 N 表示:
……这也太简单了,这不是轻重链剖分模板题吗?!!
小 Ω 于是想到在刚刚接触 OI 的时候了解到的时间换空间的原理,因此他决定本题的空间限制为 **64 MB**。
给定一棵大小为 $n$ 的树,编号 $1$ 到 $n$,第 $i \in [2,n]$ 个点的父节点记作 $f_i \in [1, i-1]$。另外,每个点 $i$ 有一个点权 $a_i$,初始点权由输入确定,具体方式见输入格式。
在数据结构题里面,需要有对应的修改和查询的操作,而树上最简单的两种非平凡操作当然是链加、链求和了。
因此你需要支持以下两种操作:
``
0 x y v``:将树上从 $x$ 到 $y$ 的简单路径上的点的权值增加 $v$;``
1 x y``:求树上从 $x$ 到 $y$ 的简单路径上的点的权值和;出完之后小 Ω 拿给小 N 看,小 N 表示:
……这也太简单了,这不是轻重链剖分模板题吗?!!
小 Ω 于是想到在刚刚接触 OI 的时候了解到的时间换空间的原理,因此他决定本题的空间限制为 **64 MB**。
输入格式
第一行输入三个正整数 $id, n, q$,其中 $i d$ 为子任务编号,和四个非负整数 $A,B,C,a_{0}$。
$A,B,C,a_{0}$ 用于生成点权 $a_{1}, a_{2}, \ldots, a_{n}$,具体方法是按照下式进行递推:
$$ a_{i}=\left(A a_{i-1}^{2}+B a_{i-1}+C\right) \bmod 2^{32} $$
接下来一行 $n-1$ 个正整数表示 $f_{2}, \ldots, f_{n}$。
接下来 $q$ 行,每行若干整数,形如 ``
其中 $x^{\prime},y^{\prime},v^{\prime}$ 用于强制在线,实际操作的 $x=x^{\prime} \operatorname{xor} P, y=y^{\prime}\operatorname{xor}P,v=v^{\prime}\operatorname{xor}P$,其中 ``
$A,B,C,a_{0}$ 用于生成点权 $a_{1}, a_{2}, \ldots, a_{n}$,具体方法是按照下式进行递推:
$$ a_{i}=\left(A a_{i-1}^{2}+B a_{i-1}+C\right) \bmod 2^{32} $$
接下来一行 $n-1$ 个正整数表示 $f_{2}, \ldots, f_{n}$。
接下来 $q$ 行,每行若干整数,形如 ``
0 x y v` 或者 `1 x y``,表示一次修改或查询。其中 $x^{\prime},y^{\prime},v^{\prime}$ 用于强制在线,实际操作的 $x=x^{\prime} \operatorname{xor} P, y=y^{\prime}\operatorname{xor}P,v=v^{\prime}\operatorname{xor}P$,其中 ``
xor` 是 `C/C++` 中的按位异或运算符 `^`,$P= \mathrm{lastans}\ \& \left(2^{20}-1\right)$,其中 $\mathrm{lastans}$ 为上一次询问的答案(没有上次询问则记为 $0$),$\&$ 为 `C/C++` 中的按位与运算符 `&``。输出格式
若干行,依次输出每个询问的答案对 $2^{32}$ 取模后的结果。
输入输出样例
输入 #1
0 10 10 935995202 406705156 7034169 418665824 1 1 1 1 1 1 1 7 2 0 10 3 781084039 1 7 5 0 897574 897583 833116301 1 897583 897572 0 886189 886179 123805569 1 886182 886190 1 145142 145136 1 854537 854538 1 896515 896525 0 879409 879412 746499584
输出 #1
2925376046 3681387943 4240586487 2878147072 2350755335 731736886