| 题目名称 | 4005. [模板]重链剖分 |
|---|---|
| 输入输出 | chain.in/out |
| 难度等级 | ★★★ |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 分享题解 |
| 通过:1, 提交:2, 通过率:50% | ||||
|
|
100 | 1.011 s | 8.35 MiB | C++ |
|
|
60 | 4.422 s | 5.61 MiB | C++ |
| 关于 重链剖分 的近10条评论(全部评论) |
|---|
给定一棵包含$n$个结点的树,每个结点有一个初始值。需要支持以下操作:
1 x y z,表示将$x$到$y$路径上的所有结点的值都加上$z$。
2 x y,表示求$x$到$y$路径上的所有结点的权值之和。
第一行三个整数$n, m$,表示树的结点数、操作次数。
接下来一行$n$个整数,表示各个结点上的初始值。
接下来$n - 1$行,每行两个整数$x,y$,表示$x$和$y$之间有一条边。
接下来$m$行,每行一个操作。
对于每个$2$操作,输出答案对$10^9 + 7$取余的结果。
5 5 3 2 6 7 5 1 2 1 3 2 4 2 5 1 5 4 3 2 3 4 1 1 3 2 2 5 3 2 1 4
24 26 20
对于$60\%$的数据,$1\le n, m\leq 1000$。
对于$100\%$的数据,$1\leq n, m\leq 10^5$,保证输入的所有权值在$[0, 2^{31}-1]$。