#Libre2512. 「BJOI2018」链上二次求和
「BJOI2018」链上二次求和
题目描述
有一条长度为 的链( ,点 与点 之间有一条边的无向图), 每个点有一个整数权值,第 个点的权值是 。现在有 个操作,每个操作如下:
操作 1(修改):给定链上两个节点 、 和一个整数 ,表示将链上 到 唯一的简单路径上每个点权值都加上 。
操作 2(询问):给定两个正整数 、,表示求链上所有节点个数大于等于 且小于等于 的简单路径节点权值和之和。由于答案很大,只用输出对质数 取模的结果即可。
一条节点个数为 的简单路径节点权值和为这条上所有 个节点(包括端点)的权值之和,而本题中要求是对所有满足要求的简单路径,求这一权值和的和。
由于是无向图,路径也是无向的,即点 到点 的路径与点 到点 的路径是同一条,不要重复计算。
输入格式
输入第一行包含两个正整数 、,分别表示节点个数和操作次数。
第二行包含 个整数,其中第 个数 为第 个点的初始权值。
接下来 行,每行为 1 u v d或 2 l r的形式,分别表示进行一次操作 1(修改)或操作 2(询问)。
输出格式
对于每次询问,输出一行一个整数,表示答案对 取模的余数。
5 5
1 1 1 1 1
2 5 5
2 1 2
1 1 2 2
2 1 1
1 1 5 3
5
13
9
数据范围与提示
记操作 1(修改)的次数为 。
对于全部数据, 保证 $n \leq 200000, m \leq 500000, m^\prime \leq 100000, 0 \leq a_i < 1000000007$
$1 \leq u \leq n, 1\leq v \leq n, 0 \leq d < 1000000007, l \leq r \leq n$ 。
对于每个数据点的详细规模与约定见下表。
| 测试点 | 约束 | |||
|---|---|---|---|---|
| 1 | 无 | |||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | ||||
| 7 | ||||
| 8 | ||||
| 9 | 保证 | |||
| 10 | 无 | |||
| 11 | 保证 | |||
| 12 | 保证 | |||
| 13 | 保证 | |||
| 14 | 保证 | |||
| 15 | 保证 | |||
| 16 | 保证 | |||
| 17 | 保证 | |||
| 18 | ||||
| 19 | 无 | |||
| 20 | ||||