检测到 KaTeX 加载失败,可能会导致文中的数学公式无法正常渲染。
#题面
#题目描述
给定一棵有 个节点的树,你需要在这棵树上进行以下操作:
1 u v d
将从 到 的路径上的所有点的权值增加 ;2 u v
询问从 到 的路径上的点权 绝对值 的和。
#输入格式
第一行两个整数 和 ,表示结点个数和操作数。
接下来一行 个整数 ,表示点 的权值。
接下来 行,每行两个整数 表示存在一条从 到 的边。
接下来 行,每行一个操作,格式见题目描述。
#输出格式
对于每个询问输出答案。
#样例输入输出
样例输入 #1
4 4
-4 1 5 -2
1 2
2 3
3 4
2 1 3
1 1 4 3
2 1 3
2 3 4
样例输出 #1
10
13
9
#提示
对于 的数据, 且 。
#思路
一道偏板子的树剖。
维护两棵线段树,一棵存正数,一棵存负数,零不影响答案,存哪里都无所谓。线段树中维护区间内正/负数的个数、区间最大值、区间和三个信息即可。
由于数据范围中给定了每次增加的数一定不为负数,因此节点只可能从负数的线段树上转移到正数的线段树上一次,所以暴力转移的复杂度是正确的。
场上的时候困得要死忘记在 pushdown 之后将懒标记置零,导致我浪费了半个小时宝贵的睡觉时间。
#代码
1 |
|