
树上点修 & 路径复合求和(固定根)
(Point Set Tree Path Composite Sum (Fixed Root))
问题描述
给定:
- 一棵含 N 个顶点的树;
- N 个整数 a0,a1,…,aN−1;
- N−1 个整数 b0,b1,…,bN−2;
- N−1 个整数 c0,c1,…,cN−2。
其中第 e 条边(0≤e≤N−2)连接顶点 ue 和 ve,且为无向边。
对每个 e(0≤e≤N−2),定义线性函数
fe(x)=be⋅x+ce.
对任意顶点 y,设 e0,e1,…,ek 是从顶点 0 到顶点 y 的简单路径上的边(按从 0 到 y 的顺序),定义复合函数
$$P(y) = f_{e_k}(f_{e_{k-1}}(\cdots f_{e_0}(a_y)\cdots)).$$
处理 Q 个查询:
0 w x:将 aw 更新为 x,然后输出 ∑v=0N−1P(v)mod998244353。
1 y z:将边 ey 的参数更新为 (by,cy)←(z,cy)(即仅更新 by 为 z),然后输出 ∑v=0N−1P(v)mod998244353。
约束条件
- 所有输入均为整数。
- 1≤N≤2×105
- 1≤Q≤2×105
- 0≤ue,ve≤N−1
- 0≤aw<998244353
- 1≤be<998244353
- 0≤ce<998244353
- 0≤w≤N−1
- 0≤e≤N−2
- 0≤x<998244353
- 1≤y≤N−2
- 1≤z<998244353
输入
N Q
a0 a1 ⋯ aN−1
u0 v0 b0 c0
u1 v1 b1 c1
:
uN−2 vN−2 bN−2 cN−2
Query₀
Query₁
:
QueryQ−1
输出
p0
p1
:
pQ−1
其中 pi 表示第 i 个查询的答案。
3 2
1 2 3
0 1 4 5
1 2 6 7
0 2 8
1 0 9 10
239
534
8 3
1 2 3 4 5 6 7 8
0 1 10 1
1 2 10 1
0 3 10 1
0 4 10 0
0 5 10 1
5 6 10 0
6 7 10 1
0 6 10
1 4 100000 2
0 7 100000
9587
91600430
769003077