[ICPC2021 Nanjing R] Paimon Segment Tree
题意翻译
## 题目描述
派蒙刚刚学习了可持久化线段树,她想马上练习一下。因此,荧决定给她出一道简单的问题:
给定数列$a_1, a_2, \cdots, a_n$,并进行$m$次操作。操作包含3个参数$l_i$, $r_i$ ($1 \le l_i \le r_i \le n$) 和 $x_i$,代表对该序列第$l_i$到第$r_i$个元素加上$x_i$。
记$a_{i, t}$为$t$次操作后$a_i$的值。注意若$a_i$未被修改,则$a_{i,t}$的值与$a_{i,t-1}$相同。定义$a_{i, 0}$是$a_i$的初始值。
完成所有操作后,荧进行$q$次询问,询问包含4个整数$l_k$, $r_k$, $x_k$ and $y_k$,派蒙需要回答
$$\sum\limits_{i=l_k}^{r_k}\sum\limits_{j=x_k}^{y_k} a_{i, j}^2$$
请将答案对$10^9 + 7$取模后输出。
## 输入格式
每个测试点含一组测试数据。
第一行3个整数$n$,$m$,$q$ ($1 \le n, m, q \le 5 \times 10^4$) 分别表示数列的长度,操作的次数和询问的次数。
第2行$n$个整数 $a_1, a_2, \cdots, a_n$ ($|a_i| < 10^9 + 7$) ,表示原始数列。
接下来$m$行每行3个整数 $l_i$, $r_i$ $x_i$ ($1 \le l_i \le r_i \le n$, $|x_i| < 10^9 + 7$),表示区间加操作。
接下来$q$行每行包含四个整数 $l_i$, $r_i$, $x_i$ $y_i$ ($1 \le l_i \le r_i \le n$, $0 \le x_i \le y_i \le m$),表示询问。
## 输出格式
对每个询问单起一行输出答案模$10^9 + 7$的结果。
题目描述
Paimon just learns the persistent segment tree and decides to practice immediately. Therefore, Lumine gives her an easy problem to start:
Given a sequence $a_1, a_2, \cdots, a_n$ of length $n$, Lumine will apply $m$ modifications to the sequence. In the $i$-th modification, indicated by three integers $l_i$, $r_i$ ($1 \le l_i \le r_i \le n$) and $x_i$, Lumine will change $a_k$ to $(a_k + x_i)$ for all $l_i \le k \le r_i$.
Let $a_{i, t}$ be the value of $a_i$ just after the $t$-th operation. This way we can keep track of all historial versions of $a_i$. Note that $a_{i,t}$ might be the same as $a_{i,t-1}$ if it hasn't been modified in the $t$-th modification. For completeness we also define $a_{i, 0}$ as the initial value of $a_i$.
After all modifications have been applied, Lumine will give Paimon $q$ queries about the sum of squares among the historical values. The $k$-th query is indicated by four integers $l_k$, $r_k$, $x_k$ and $y_k$ and requires Paimon to calculate
$$\sum\limits_{i=l_k}^{r_k}\sum\limits_{j=x_k}^{y_k} a_{i, j}^2$$
Please help Paimon compute the result for all queries. As the answer might be very large, please output the answer modulo $10^9 + 7$.
输入输出格式
输入格式
There is only one test case in each test file.
The first line of the input contains three integers $n$, $m$ and $q$ ($1 \le n, m, q \le 5 \times 10^4$) indicating the length of the sequence, the number of modifications and the number of queries.
The second line contains $n$ integers $a_1, a_2, \cdots, a_n$ ($|a_i| < 10^9 + 7$) indicating the initial sequence.
For the following $m$ lines, the $i$-th line contains three integers $l_i$, $r_i$ and $x_i$ ($1 \le l_i \le r_i \le n$, $|x_i| < 10^9 + 7$) indicating the $i$-th modification.
For the following $q$ lines, the $i$-th line contains four integers $l_i$, $r_i$, $x_i$ and $y_i$ ($1 \le l_i \le r_i \le n$, $0 \le x_i \le y_i \le m$) indicating the $i$-th query.
输出格式
For each query output one line containing one integer indicating the answer modulo $10^9 + 7$.
输入输出样例
输入样例 #1
3 1 1
8 1 6
2 3 2
2 2 0 0
输出样例 #1
1
输入样例 #2
4 3 3
2 3 2 2
1 1 6
1 3 3
1 3 6
2 2 2 3
1 4 1 3
4 4 2 3
输出样例 #2
180
825
8