A93027.「SDOI / SXOI2022」无处存储

NOI/NOI+/CTSC

官方

通过率:0%

时间限制:4.00s

内存限制:64MB

题目描述

小 Ω 想出一个数据结构题,于是它先造了一棵点有点权的树:

给定一棵大小为 nn 的树,编号 11nn,第 i[2,n]i \in [2,n] 个点的父节点记作 fi[1,i1]f_i \in [1, i-1]。另外,每个点 ii 有一个点权 aia_i​,初始点权由输入确定,具体方式见输入格式。

在数据结构题里面,需要有对应的修改和查询的操作,而树上最简单的两种非平凡操作当然是链加、链求和了。

因此你需要支持以下两种操作:

0 x y v:将树上从 xxyy 的简单路径上的点的权值增加 vv

1 x y:求树上从 xxyy 的简单路径上的点的权值和;

出完之后小 Ω 拿给小 N 看,小 N 表示:

……这也太简单了,这不是轻重链剖分模板题吗?!!

小 Ω 于是想到在刚刚接触 OI 的时候了解到的时间换空间的原理,因此他决定本题的空间限制为 64 MB

输入格式

第一行输入三个正整数 id,n,qid, n, q,其中 idi d 为子任务编号,和四个非负整数 A,B,C,a0A,B,C,a_{0}

A,B,C,a0A,B,C,a_{0} 用于生成点权 a1,a2,,ana_{1}, a_{2}, \ldots, a_{n},具体方法是按照下式进行递推:

ai=(Aai12+Bai1+C)mod232a_{i}=\left(A a_{i-1}^{2}+B a_{i-1}+C\right) \bmod 2^{32}

接下来一行 n1n-1 个正整数表示 f2,,fnf_{2}, \ldots, f_{n}

接下来 qq 行,每行若干整数,形如 0 x y v 或者 1 x y,表示一次修改或查询。

其中 x,y,vx^{\prime},y^{\prime},v^{\prime} 用于强制在线,实际操作的 x=xxorP,y=yxorP,v=vxorPx=x^{\prime} \operatorname{xor} P, y=y^{\prime}\operatorname{xor}P,v=v^{\prime}\operatorname{xor}P,其中 xorC/C++ 中的按位异或运算符 ^P=lastans &(2201)P= \mathrm{lastans}\ \& \left(2^{20}-1\right),其中 lastans\mathrm{lastans} 为上一次询问的答案(没有上次询问则记为 00),&\&C/C++ 中的按位与运算符 &

输出格式

若干行,依次输出每个询问的答案对 2322^{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
首页